按一个列选择不同的值以及其他所有内容

3

我会尝试以下内容,但是失败了... 我想要的是所有不同名称的内容:

所以,如果我有

NAME    A  B  C  D
-------------------
john    5  6  6  7
jack    5  3  2  4
paul    5  7  9  2
john    4  2  3  4

我只需要前三行。
select distinct name, * from items order by NAME, D

这是可能的吗?

1
约翰的结果集应该是什么? - SWeko
2
如果有重复的名称,避免记录的标准是什么? - Joe G Joseph
1
约翰应该显示a、b、c、d中的哪个值? - user330315
5个回答

2

如果您不在意重复名称的情况下选择哪些值:

select name,
       min(a),
       min(b),
       min(c),
       min(d)
from items
group by name
order by name;

请注意,使用此解决方案时,a、b、c、d的值不一定来自同一行!

2

样例输入:

Name    A   B   C   D
john    5   6   6   7
jack    5   3   2   4
paul    5   7   9   2
john    4   2   3   4
john    5   6   6   7

查询

SELECT Name,Max(A) AS A,MAX(B) AS B,MAX(C) AS C,MAX(D) AS D
FROM <your table>
GROUP BY Name

期望输出

Name    A   B   C   D
jack    5   3   2   4
john    5   6   6   7
paul    5   7   9   2

0
请使用GROUP BY代替:
SELECT a.*
FROM items a
     INNER JOIN ( SELECT MIN(id) id
                  FROM items
                  GROUP BY name
                ) b
                ON a.id = b.id
ORDER BY a.name;

示例:SQLFiddle


输出不符合姓名 A B C D 杰克 5 3 2 4 约翰 9 8 9 11 保罗 5 7 9 2 - Niladri Biswas

0

尝试这个查询

select distinct name,A,B,C,D from items group by name order by name

0

尝试这个:

如果您有重复的名称,这将选择任何一个记录

   select slno,name,A,B,C,D
   from           
   ( SELECT  @i:=@i+1 AS slno,t.*
     FROM items t ,(SELECT @i:=0) r )a
   group  by    name  
   having slno=min(slno)


SQL Fiddle演示


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接