【问题标题】:Trouble with GROUP BY CASEGROUP BY CASE 的问题
【发布时间】:2010-08-16 05:48:49
【问题描述】:

由于 (Department_Code, Course_Code) 行,以下查询给出错误“#1241 - 操作数应包含 1 列”。当我用 (Course_Code) 替换它时,它可以工作。然而,这不是我想要的

SELECT * FROM Classes
GROUP BY CASE 
WHEN (1) THEN
 Department_Code
 ELSE CASE WHEN (2) THEN 
  (Department_Code, Course_Code)
 ELSE Class_ID
 END
END

满足条件(2)时,如何按Department_Code、Course_Code分组?

【问题讨论】:

    标签: sql mysql group-by case


    【解决方案1】:

    case 表达式只能返回一个值,因此您需要两个 case 表达式。此外,请为每个表达式使用单个 case 表达式,而不是将两个相互嵌套:

    SELECT * FROM Classes
    GROUP BY
      CASE 
      WHEN (1) THEN
        Department_Code
      WHEN (2) THEN 
        Department_Code
      ELSE
        Class_ID
      END,
      CASE 
      WHEN (2) THEN 
        Course_Code
      ELSE
        1
      END
    

    【讨论】:

      【解决方案2】:

      遇到了同样的问题,但找到了一种更简单的方法,即构造一个辅助字段,然后可以在 GROUP BY 中引用该字段。 或者,您可以执行相同的条件技巧,将其放在 GROUP BY 中,只要您连接字段即可。

      SELECT *,
      
      If( 'whatever field to check' = 2 , CONCAT(Department_Code,Course_Code), Course_Code) AS 'group1'
      
      FROM Classes
      GROUP BY group1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-03-22
        • 2021-03-15
        • 2013-11-19
        • 2015-07-21
        • 1970-01-01
        • 1970-01-01
        • 2012-10-02
        相关资源
        最近更新 更多