Mysql 在({数字集})中时的大小写

Mysql 在({数字集})中时的大小写,mysql,Mysql,我需要MySQL中的以下case语句 当列值为(1,2,5,7,14,17)时,返回0,否则返回1,我需要按ORDERBY子句使用它 我的第一印象是这样提问: SELECT ... ORDER BY (CASE column WHEN IN (1, 2, 5, 7, 14, 17) THEN 0 ELSE 1 END) DESC SELECT ... ORDER BY (CASE column WHEN 1 THEN WHEN 2 THEN 0 WHEN 5 THEN ... 0 ELSE 1

我需要MySQL中的以下case语句

当列值为(1,2,5,7,14,17)时,返回0,否则返回1,我需要按ORDERBY子句使用它

我的第一印象是这样提问:

SELECT ... ORDER BY (CASE column WHEN IN (1, 2, 5, 7, 14, 17) THEN 0 ELSE 1 END) DESC
SELECT ... ORDER BY (CASE column WHEN 1 THEN WHEN 2 THEN 0 WHEN 5 THEN ... 0 ELSE 1 END) DESC
但这显然是失败的

我可以这样写:

SELECT ... ORDER BY (CASE column WHEN IN (1, 2, 5, 7, 14, 17) THEN 0 ELSE 1 END) DESC
SELECT ... ORDER BY (CASE column WHEN 1 THEN WHEN 2 THEN 0 WHEN 5 THEN ... 0 ELSE 1 END) DESC

但我正在寻找一种更优雅的方式。还有其他优雅的语法吗?

您可以使用
嵌套查询
,例如:

SELECT B.*
FROM (
    SELECT A, CASE WHEN B IN (1, 2, 5, 7, 14, 17) THEN 1 ELSE 0 END AS ORDERING
    FROM TABLE
) B
ORDER BY B.ORDERING DESC;

您可以使用
嵌套查询
,例如:

SELECT B.*
FROM (
    SELECT A, CASE WHEN B IN (1, 2, 5, 7, 14, 17) THEN 1 ELSE 0 END AS ORDERING
    FROM TABLE
) B
ORDER BY B.ORDERING DESC;
这需要发挥作用

SELECT ... 
ORDER BY 
CASE WHEN (column IN (1, 2, 5, 7, 14, 17) THEN 0 ELSE 1 END) DESC

演示:

|X| | --: | | 1 | | 120 | | 7 | | 22 | dbfiddle

这需要起作用

SELECT ... 
ORDER BY 
CASE WHEN (column IN (1, 2, 5, 7, 14, 17) THEN 0 ELSE 1 END) DESC

演示:

|X| | --: | | 1 | | 120 | | 7 | | 22 | 小提琴