mysql - 使用 CASE 后无法按超过 1 列对 sql 中的结果进行排序

标签 mysql sql database sorting

以前,我的 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/

相关文章:

php - Mysql 获取包含计数和日期之间的数据

sql - 将 CSV 文件导入 postgres - 跳过前 3 行

java - 使用 Spark 流从数据库流式读取

javascript - 当用户使用 jquery 单击添加更多 anchor 标记时更改选择时获取 Null 值?

mysql - 使用 setMaxResults 和 native 查询创建的 SQL 查询不正确

database - 在没有数据库的情况下运行 WordPress

mongodb - 将 MongoDB 数据库复制到本地计算机

java - 如何处理源代码中的巨大 SQL 字符串

sql - 按日期时间分组忽略时间部分

php - 将字符串从应用程序发送到服务器