假设您有一个包含多个相同条目的表格,并且您只想显示每个条目中的第一个。
userid | event
1 01-01-2017
2 09-12-2016
2 05-06-2017
2 09-12-2016
3 10-03-2017
...
并且您只想显示一个日期(例如,每个用户最少一个):
userid | event
1 01-01-2017
2 09-12-2016
3 10-03-2017
....
通常我会尝试子查询:
SELECT userid, event FROM table as A
WHERE event=(SELECT min(event) FROM table as B WHERE A.userid = B.userid )
但在mySQL中,这显示了userid = 2的2行,因为该用户有2个相同的最小日期。
你怎么能限制没有。行只到一个?
答案 0 :(得分:1)
SELECT userid, event
FROM YourTable t
WHERE NOT EXISTS (
SELECT * FROM YourTable t WHERE t.userid = userid AND event > t.event
)
OR
SELECT a.id, a.rev, a.contents
FROM (SELECT userid, Event,
ROW_NUMBER() OVER (PARTITION BY Event ORDER BY userid DESC) rank
FROM YourTable) a
WHERE a.rank = 1
答案 1 :(得分:1)
如何将DISTINCT
添加到SELECT
?