【问题标题】:MySQL: value based on conditionsMySQL:基于条件的值
【发布时间】:2011-01-22 02:09:03
【问题描述】:

我有一个 MySQL 查询,我希望它返回一个伪列,该列基于:

  • 如果 columnW 不等于 0,则应该是 1 BUT
  • 如果 columnX 不等于 0,则应为 2 BUT
  • 如果 columnY 不等于 0,则应该是 3 BUT
  • 如果 columnZ 不等于 0,则应为 4

希望这是有道理的。我的 SQL 不够好,无法解决这个问题。

【问题讨论】:

    标签: sql mysql conditional


    【解决方案1】:

    您可以使用 CASE ... WHEN 来执行此操作。

    mysql> SELECT CASE 1 WHEN 1 THEN 'one'
        ->     WHEN 2 THEN 'two' ELSE 'more' END;
            -> 'one'
    mysql> SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;
            -> 'true'
    mysql> SELECT CASE BINARY 'B'
        ->     WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;
            -> NULL
    

    【讨论】:

      【解决方案2】:

      尝试使用case expression

      SELECT CASE WHEN columnZ <> 0 THEN 4
                  WHEN columnY <> 0 THEN 3
                  WHEN columnX <> 0 THEN 2
                  WHEN columnW <> 0 THEN 1
                  ELSE 0
             END AS your_alias_name
      FROM ...
      

      【讨论】:

      • 是否有一个函数可以将所选值放入列表中并使用列的值作为下标从该列表中进行选择,例如SELECT xxxx(fruit-index-field-name, 'apple', 'orange',' papaya' ...) as FruitName, ...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-19
      • 1970-01-01
      • 2013-04-20
      • 1970-01-01
      • 2023-04-01
      • 2020-08-27
      相关资源
      最近更新 更多