我有一个表类别如下类别\u id12三45678我跑了 SELECT category_id from category order by category_id > 3 DESC, category_id; 结果是类别\u id4567812三有人能解释一下吗1) 为什么会有这样的结果?2) “按类别订购\u id>3”是什么意思?3) 第二个表达式“category\u id”的作用是什么?
SELECT category_id from category order by category_id > 3 DESC, category_id;
ewm0tg9j1#
您当前的 ORDER BY 子句有两个排序级别:
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 .
category_id > 3
category_id
huwehgph2#
这是你的 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排列。
2条答案
按热度按时间ewm0tg9j1#
您当前的
ORDER BY
子句有两个排序级别:第一级
category_id > 3
是布尔表达式,将为0(false)或1(true)。但是因为你把这个等级降下来,真正的情况会是第一个。这意味着category_id
大于3的值将出现在所有category_id
值小于3。那么,第二个排序顺序是
category_id
. 这意味着在上述两个组中的每个组中,值将按category_id
.huwehgph2#
这是你的
order by
:mysql将布尔表达式视为一个整数,在需要这样做的上下文中。所以呢
category_id > 3
被视为整数,1表示真,0表示假。因此,这将所有大于3(true)的类别放在第一位,因为true>false(1>0)。在每个组中,类别按id排列。