繁体   English   中英

试图用案例语句理解简单的 SQL 查询

[英]Trying to understand simple SQL query with case statement

我试图理解这个查询:

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 ELSE 3 END 的语法是什么意思? 我知道 END 是关闭 case 语句,但是 1、2 和 3 是什么?

您的CASE子句位于ORDER BY部分 - 它不会成为 output 的一部分,它只是被 SQL 引擎用于排序。

1 , 2 , 3是可排序的值。

基本上它的意思是将ACTIVE行放在首位 (1),然后是INACTIVE行 (2),然后是任何两个都不是 (3) 的行。

鉴于ACTIVEINACTIVE的排序方式相同,我猜表中还有其他值不按该顺序排序(可能CLOSEDDORMANT会在INACTIVE之前

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM