在mysql中只显示相同条目的一行

时间:2017-07-25 13:40:20

标签: mysql

假设您有一个包含多个相同条目的表格,并且您只想显示每个条目中的第一个。

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个相同的最小日期。

你怎么能限制没有。行只到一个?

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