我正在试着理解这个问题:
SELECT *
FROM servers
ORDER BY
CASE
WHEN status = "ACTIVE" THEN 1
WHEN status = "INACTIVE" THEN 2
ELSE 3
END
我知道这是从服务器表中选择所有行,并首先使用WHERE COLUMN STATUS=“ACTIVE”对它们进行排序,然后使用WHERE STATUS=“INACTIVE”进行排序。
THEN 1...THEN 2的句法是什么意思?我知道end是结束case语句,但1、2和3是什么?
1条答案
按热度按时间zzwlnbp81#
您的
CASE
子句位于ORDER BY
部分-它不会成为输出的一部分,只是由SQL引擎用于排序。1
、2
、3
是可排序值。基本上就是将
ACTIVE
行放在第一位(1),然后是INACTIVE
行(2),然后是既不是ACTIVE
行(3)的任何行。考虑到
ACTIVE
和INACTIVE
的排序方式相同,我猜想表中还有其他值没有按该顺序排序(可能是CLOSED
或DORMANT
,其排在INACTIVE
之前