我應該做出取得這一成果mysql命令按日期遞增,其次是USER_ID
這裏什麼查詢我行
user_id | date 3 | 2017-09-07 2 | 2017-09-08 3 | 2017-09-10
和查詢我想要的輸出是這
user_id | date 3 | 2017-09-07 3 | 2017-09-10 2 | 2017-09-08
但它不是基於user_id,我只是想查詢按日期順序排列的行ASC和user_id彼此相鄰。
我應該做出取得這一成果mysql命令按日期遞增,其次是USER_ID
這裏什麼查詢我行
user_id | date 3 | 2017-09-07 2 | 2017-09-08 3 | 2017-09-10
和查詢我想要的輸出是這
user_id | date 3 | 2017-09-07 3 | 2017-09-10 2 | 2017-09-08
但它不是基於user_id,我只是想查詢按日期順序排列的行ASC和user_id彼此相鄰。
您可以使用下面的查詢:
SELECT user_id, MIN(date) AS min_date
FROM mytable
GROUP BY user_id
得到最早的每用戶date
值。
使用上面的查詢作爲派生表就可以達到所需的排序:
SELECT t1.user_id, t1.date
FROM mytable AS t1
JOIN (
SELECT user_id, MIN(date) AS min_date
FROM mytable
GROUP BY user_id
) AS t2 ON t1.user_id = t2.user_id
ORDER BY t2.min_date, user_id, t1.date
注:如果兩個或多個用戶共享的查詢會優先給用戶具有最小相同最早日期值爲user_id
。
我想這應該做你婉什麼:
SELECT * FROM table ORDER BY user_id DESC, date ASC
你有你已經測試了一個查詢?您可以使用http://sqlfiddle.com/ – kenfire
爲什麼用戶2的記錄出現在用戶3的記錄之後? –
@TimBiegeleisen它不是整個表我只是顯示了一個行的例子,以適應問題 – butching