在 MySQL 中,这两个查询之间有区别吗?
SELECT * FROM .... ORDER BY Created,Id DESC
和
SELECT * FROM .... ORDER BY Created DESC, Id DESC
期望的行为:按“创建”(时间戳)排序(降序),但是当两个项目具有相同的“创建”值时,然后回退到使用 Id 排序(降序)。
在 MySQL 中,这两个查询之间有区别吗?
SELECT * FROM .... ORDER BY Created,Id DESC
和
SELECT * FROM .... ORDER BY Created DESC, Id DESC
期望的行为:按“创建”(时间戳)排序(降序),但是当两个项目具有相同的“创建”值时,然后回退到使用 Id 排序(降序)。
是,有一点不同。默认顺序是升序,所以:
SELECT * FROM .... ORDER BY Created,Id DESC
将按Created
升序排序,然后Id
降序
SELECT * FROM .... ORDER BY Created DESC, Id DESC
将按Created
降序排序,然后Id
降序
当然有区别。第一个按CREATED
升序排序,然后如果有多个,则按降序对这些行进行排序ID
。第二个先按CREATED
降序排序,ID
如果有多个则按降序排序。
第二个应该做你想做的。
(当然,这引出了一个问题:你为什么不自己尝试一下呢?)
我认为第一个行不通?
你可以做
SELECT * FROM .... ORDER BY Created ASC, Id DESC
SELECT * FROM .... ORDER BY Created DESC, Id ASC
但如果你做不同的事情,它会稍微变慢。
在第一个中,默认 ordering( ASC
) 用于Created
列。
日期的默认排序是 ASC - 升序。
因此,第一个查询将按升序排列项目,第二个查询将按降序排列。