sqlite 尝试使用CASE语句理解简单的SQL查询

uttx8gqw  于 2022-11-15  发布在  SQLite
关注(0)|答案(1)|浏览(265)

我正在试着理解这个问题:

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是什么?

zzwlnbp8

zzwlnbp81#

您的CASE子句位于ORDER BY部分-它不会成为输出的一部分,只是由SQL引擎用于排序。
123是可排序值。
基本上就是将ACTIVE行放在第一位(1),然后是INACTIVE行(2),然后是既不是ACTIVE行(3)的任何行。
考虑到ACTIVEINACTIVE的排序方式相同,我猜想表中还有其他值没有按该顺序排序(可能是CLOSEDDORMANT,其排在INACTIVE之前

相关问题