2017-07-25 49 views
0

假設您有一個包含多個相同條目的表,並且只想顯示每個表中的第一個。只顯示一行用於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的這個顯示器2行用於userid = 2,因爲該用戶具有2個相同的最小日期。

你怎麼能限制沒有。的行只有一個?

+0

一個簡單的'group by'就足夠了。 –

+0

首先:將日期存儲爲日期。 Next:RDBMS中的表需要PRIMARY KEYS - 否則它們不是真正的表。 – Strawberry

回答

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

如何添加DISTINCTSELECT

+0

謝謝,絕對DISTINCT作品。我正在嘗試LIMIT(而不是SQL Server中的TOP)並仍然獲得多個條目。 – user3310782

相關問題