在一个col和其他所有内容上选择distinct

时间:2012-09-25 07:01:37

标签: mysql sql

我正在尝试以下但它失败了......我想要的只是一切,但只有不同的名字:

所以,如果我有

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

这可能吗?

5 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分: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

答案 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

答案 3 :(得分:0)

尝试此查询

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

答案 4 :(得分: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 Demo