以前,我的 SQL 代码(看起来像这样)运行良好(它选择所有符合条件的行,然后首先按 column_5 排序,或者更确切地说是第五个字段,然后是 column_6)
SELECT *
FROM table
WHERE column_2="blah" AND column_4=34
ORDER BY column_5,column_6
但是,我希望将特定结果放在首位,所以我使用了 CASE 命令,但是当我这样做时,我无法再按超过 1 列的方式对其余结果进行排序。例如,以下代码将起作用:
SELECT *
FROM table
WHERE column_2="blah" AND column_4=34
ORDER BY CASE WHEN column_3= 'blah' THEN '1'
ELSE column_4 end
但这不起作用=>
SELECT *
FROM table
WHERE column_2="blah" AND column_4=34
ORDER BY CASE WHEN column_3= 'blah' THEN '1'
ELSE column_4, column_2 end
column_2
周围的逗号附近出现语法错误。
就像我在执行 CASE 命令后无法按多列排序一样。有人知道我做错了什么吗?我该如何解决?
最佳答案
SELECT *
FROM your_table
ORDER BY CASE WHEN column_3 = 'blah'
THEN 1
ELSE 2
END,
column_4,
column_2
关于mysql - 使用 CASE 后无法按超过 1 列对 sql 中的结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28758470/