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

最初の3行だけ欲しい

select distinct name, * from items order by NAME, D

これは可能ですか?

4

5 に答える 5

2

名前が重複している場合にどの値が選択されるかを気にしない場合:

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

このソリューションでは、a、b、c、dの値が必ずしも同じ行からのものであるとは限らないことに注意してください。

于 2012-09-25T07:08:43.713 に答える
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
于 2012-09-25T07:24:21.800 に答える
0

これを試して:

名前が重複している場合、これにより任意の1つのレコードが選択されます

   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フィドルデモ

于 2012-09-25T07:16:37.323 に答える
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;

例: SQLフィドル

于 2012-09-25T07:03:09.100 に答える
0

このクエリを試してください

select distinct name,A,B,C,D from items group by name order by name
于 2012-09-25T07:04:59.483 に答える