MySql按日期排序asc,后跟user_id

时间:2017-09-11 08:38:55

标签: mysql

我应该用什么查询来实现这个结果

这是我的行

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彼此相邻。

2 个答案:

答案 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

此处示例:http://sqlfiddle.com/#!9/899b0/2