鉴于下表......
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
,但我尝试的一切都失败了...任何指针?
答案 0 :(得分: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
答案 1 :(得分:0)
SELECT ID , MIN(NUM) as MIN_NUM , USER FROM usertable GROUP BY USER
答案 2 :(得分:0)
HEre是另一种方法。 更新正确的REREFERENCE
查询
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