我有一個包含一個表positions
此表如下:爲USER_ID由多個日期排序的一個結果
user_id | current | started_at | finished_at
2 | false | 10-07-2016 | 02-08-2016
1 | false | 19-07-2016 | 27-07-2016
1 | true | 29-07-2016 | null
3 | true | 20-07-2016 | null
3 | false | 01-07-2016 | 18-07-2016
我使用的情況下爲使用的started_at
或finished_at
日期取決於排序此表是否current
是真還是假
SELECT *
FROM positions
ORDER BY
CASE
WHEN current = true
THEN started_at
ELSE finished_at
END
DESC
也能正常工作的期望,但現在我想只提取的第一行各user_id
所以在我的示例數據,我想只有有以下返回。
user_id | current | started_at | finished_at
2 | false | 10-07-2016 | 02-08-2016
1 | true | 29-07-2016 | null
3 | true | 20-07-2016 | null
我想這可能是與一個GROUP BY
做,但我不能讓它沒有錯誤工作或也許我需要一個子查詢,我不知道。
是「只有第一行」等於'WHERE current = true'嗎? – Razzka
對不起,這是一個錯誤,修正 – Rob