1

次の表を考えると...

ID  USER  NUM
 1     1   69
 2     2   75
 3     3    7
 4     1   31
 5     2   18
 6     3   70
 7     1   12
 8     2   23
 9     3   42

...各 USER の NUMが最も小さい行を返すクエリはどれですか?

結果は次のようになります...

ID  USER  NUM
 7     1   12
 5     2   18
 3     3    7

これに頭を悩ませることはできません!があると仮定しますが、GROUP BY私が試したものはすべて失敗します...ポインタはありますか?

4

3 に答える 3

3
SELECT t.*
FROM tablename t
INNER JOIN (SELECT user, MIN(num) num
FROM tablename
GROUP BY user) x ON t.user = x.user AND t.num = x.num

また

SELECT t1.*
FROM tablename t1
LEFT JOIN tablename t2 ON t1.user = t2.user AND t1.num > t2.num
WHERE t2.id IS NULL
于 2012-12-19T09:11:04.510 に答える
0
SELECT ID , MIN(NUM) as MIN_NUM , USER FROM usertable GROUP BY USER

デモhttp://sqlfiddle.com/#!2/ce2fd/1をご覧ください

于 2012-12-19T09:11:57.913 に答える
0

ここに別の方法があります。正しい参照で更新

クエリ

select b.id, a.user, a.minnum from 
mytable as b
join 
(select user, min(num) as minnum
 from mytable
 group by user
) as a
on b.user = a.user
where b.num = a.minnum
order by a.minnum asc
limit 3
;

結果:

  ID    USER    MINNUM
3   3   7
7   1   12
5   2   18
于 2012-12-19T09:17:53.853 に答える