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