[英]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) 的行。
鉴于ACTIVE
和INACTIVE
的排序方式相同,我猜表中还有其他值不按该顺序排序(可能CLOSED
或DORMANT
会在INACTIVE
之前
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.