php - 如果 id 为 ='3',则始终位于底部(在 MySQL 中使用 `ORDER BY`)

标签 php mysql database

id
----
0
2
1
3
7
1
6
3
1

我想在 MySQL 中使用 ORDER BYid 值进行降序排序。

但是如果id的值等于3,总是放在底部。

结果是这样的:

id
----
7
6
2
1
1
1
0
3
3

我该怎么办?

我的尝试:

SELECT id FROM `table` ORDER BY CASE WHEN id='3' THEN ??? END, id DESC

问号应该是什么?

最佳答案

除了 Tim 的回答之外,我还想尝试一下 bool 值:

SELECT
    id
FROM
    `table`
ORDER BY (id = 3), id DESC

自从 MySQL boolean表达式解析为 0/1这样我们就可以在这个特定场景中使用它。

id is equal to 3那么顺序看起来像 ORDER BY 1, <id> DESC .

对于 3 以外的任何其他 ID,它看起来像 ORDER BY 0, <id> DESC

此处演示:

SQLFiddle

关于php - 如果 id 为 ='3',则始终位于底部(在 MySQL 中使用 `ORDER BY`),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39095728/

相关文章:

php - 返回 PHP 中带前导零的字符串

php - 为什么这个 PDO 语句会默默地失败?

mysql - 如何动态更改where子句中的列?

sql - 比较两个表并发现不匹配

mysql - 多品类、多子功能产品的数据库设计

sql - 微软 Access : searching a column for a star/asterisk

java - 如何在 Java 中表示 Oracle Interval

php - 从android输入数据到mysql数据库

php - 使用 sqlsrv 切换数据库的正确方法是什么?

php - 使用 MySQL 分析调查数据