首页 > 解决方案 > MySQL 使用某些属性排序

问题描述

我有一个表格类别如下
category_id
1
2
3
4
5
6
7
8

我跑了SELECT category_id from category order by category_id > 3 DESC, category_id;

结果是
category_id
4
5
6
7
8
1
2
3
谁能解释一下
1)为什么会这样?
2) "order by category_id > 3" 是什么?3)第二个表达式“category_id”做什么?

标签: mysqlsqlsql-order-by

解决方案


这是你的order by

order by category_id > 3 DESC, category_id

MySQL 在必要的上下文中将布尔表达式视为整数。所以category_id > 3被视为一个整数,1 为真,0 为假。

因此,这将所有大于 3 (true) 的类别放在首位,因为 true > false (1 > 0)。在每个组中,类别按 id 排列。


推荐阅读