0

有表:

Game
----------
ID
UploadDate
LastUpdate

UploadDate游戏上传的日期在哪里,是游戏LastUpdate的最后更新日期。

新游戏会有UploadDate == LastUpdate

我想回来Most recently updated games。它们应该按LastUpdate降序排列,但如果UploadDate == LastUpdate它们应该被推到列表的底部。

我试过了:

ORDER BY UploadDate <> LastUpdate, LastUpdate DESC

但是语法不正确。任何人都可以通过查询帮助我处理这个订单吗?

4

3 回答 3

3

您使用的语法适用于 MySQL。以下适用于几乎所有数据库:

ORDER BY (case when UploadDate <> LastUpdate then 1 else 0 end) desc, LastUpdate DESC
于 2013-07-23T13:58:38.543 回答
2

你非常接近 - order by 子句需要值来排序 - 而不是布尔条件。相反,您可以将条件包装在 CASE 语句中,例如:

ORDER BY CASE WHEN UploadDate <> LastUpdate THEN 0 ELSE 1 END ASC, LastUpdate DESC
于 2013-07-23T13:58:50.563 回答
1

尝试:

ORDER BY CASE WHEN UploadDate = LastUpdate THEN 2 ELSE 1 END ASC, LastUpdate DESC
于 2013-07-23T13:59:25.087 回答