Php sql ORDER BY --


Php sql ORDER BY --

Users Table:

ID|Name|Deleted
1 |    |  N 
2 | b  |  Y 
3 | c  |  N
4 | d  |  N 

删除的默认值为"N"

我想按 id desc 排序,但我想最后显示已删除的用户。

即何时删除的"Y"应该最后出现

您可以在 order by 中使用多个键。 所以:

order by (deleted = 'Y') asc, id desc

表达式 (deleted = 'Y') 是一个布尔表达式,MySQL 将其视为一个数字,其中 1 表示真,0 表示假。 asc将真实值放在最后。

在大多数其他数据库中,您可以使用case执行此操作:

order by (case when deleted = 'Y' then 1 else 2 end) desc, id desc

这将是简单的解决方案

select * from table_name ORDER BY deleted ASC, id DESC