数据库
首页 > 数据库> > mysql – 想订购两列,但不是通常的方式

mysql – 想订购两列,但不是通常的方式

作者:互联网

我有一张桌子如下

ID  userID  Date
1   2273    22/08/2011
2   2274    24/08/2011
3   2275    26/08/2011
4   2273    26/08/2011
5   2273    26/08/2011
6   2271    26/08/2011

并希望结果如下.需要mysql查询帮助实现这一点.基本上我想按日期订购,但同一个用户必须在一起.我试图在单个查询中实现这一点.

ID  userID  Date
1   2273    22/08/2011
4   2273    26/08/2011
5   2273    26/08/2011
2   2274    24/08/2011
3   2275    26/08/2011
6   2271    26/08/2011

我尝试通过userId,Date从mytable订单中选择*,并将导致以下内容

ID  userID  Date
6   2271    26/08/2011
1   2273    22/08/2011
4   2273    26/08/2011
5   2273    26/08/2011
2   2274    24/08/2011
3   2275    26/08/2011

这不是我想要的我想要用日期升序的用户应该是第一个并且表中的相同用户记录应该跟随他的第一个记录…

解决方法:

SELECT *
FROM Mytable
ORDER BY
   userID, Date

我假设Date实际上是一个日期/时间类型而不是varchar …

澄清后编辑:

未经测试

SELECT
    M.*
FROM
    ( --one row for each user
    SELECT MIN(Date) AS FirstUserDate, userID
    FROM MyTable
    GROUP BY userID
    ) foo
    JOIN
    MyTable M ON foo.userID = M.userID
ORDER BY
    foo.FirstUserDate, M.userID, M.Date;

标签:mysql,order-by
来源: https://codeday.me/bug/20190806/1600037.html