我应该用什么查询来实现这个结果
这是我的行
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彼此相邻。
答案 0 :(得分:2)
您可以使用以下查询:
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
值的用户。
答案 1 :(得分:1)
我认为这应该做你想做的事情:
SELECT * FROM table ORDER BY user_id DESC, date ASC