mysql使用一些属性排序

avkwfej4  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(364)

我有一个表类别如下
类别\u id
1
2

4
5
6
7
8
我跑了 SELECT category_id from category order by category_id > 3 DESC, category_id; 结果是
类别\u id
4
5
6
7
8
1
2

有人能解释一下吗
1) 为什么会有这样的结果?
2) “按类别订购\u id>3”是什么意思?3) 第二个表达式“category\u id”的作用是什么?

ewm0tg9j

ewm0tg9j1#

您当前的 ORDER BY 子句有两个排序级别:

ORDER BY
    category_id > 3 DESC,
    category_id;

第一级 category_id > 3 是布尔表达式,将为0(false)或1(true)。但是因为你把这个等级降下来,真正的情况会是第一个。这意味着 category_id 大于3的值将出现在所有 category_id 值小于3。
那么,第二个排序顺序是 category_id . 这意味着在上述两个组中的每个组中,值将按 category_id .

huwehgph

huwehgph2#

这是你的 order by :

order by category_id > 3 DESC, category_id

mysql将布尔表达式视为一个整数,在需要这样做的上下文中。所以呢 category_id > 3 被视为整数,1表示真,0表示假。
因此,这将所有大于3(true)的类别放在第一位,因为true>false(1>0)。在每个组中,类别按id排列。

相关问题