【问题标题】:Is there such thing as a SELECT with an IF/ELSE statement in mySQL?在 mySQL 中是否存在带有 IF/ELSE 语句的 SELECT 之类的东西?
【发布时间】:2009-10-29 06:44:48
【问题描述】:

是否可以在 mySQL 中使用带有 IF/ELSE 子句的 SELECT 语句?

例如

我想选择所有表格行并仅在 color2 为“棕色”时返回 color2。下面是我想要完成的示例 SQL 选择语句。

苹果 +--------+--------+----------+----------+ |身份证 |姓名 |颜色1 |颜色2 | +--------+--------+----------+----------+ | 1 |苹果1 |红色 |棕色 | +--------+--------+----------+----------+ | 2 |苹果2 |红色 |绿色 | +--------+--------+----------+----------+

SELECT name, (IF color2 = 'brown' SELECT color2 ELSE SELECT color1) AS color FROM apples

会返回:

+----------+----------+ |苹果1 |棕色 | +----------+----------+ |苹果2 |红色 | +----------+----------+

【问题讨论】:

    标签: sql mysql


    【解决方案1】:

    MySQL 有一个IF() 函数:

    SELECT name, IF(color2='brown', color2, color1) AS color FROM apples
    

    【讨论】:

    • 感谢 ChssPly76。我在这里有一个后续问题。我正在尝试使用该新表列(颜色)来加入另一个表,但连接给了我这个错误:“on 子句”中的未知列“颜色”。有什么想法吗?
    • 我在此处发布了后续内容:stackoverflow.com/questions/1642147/…。已经有人回答了。谢谢!
    【解决方案2】:

    用途:

    SELECT a.name, 
           CASE WHEN a.color2 = 'brown' THEN a.color2 ELSE a.color1 END AS color 
      FROM apples a
    

    参考:CASE

    CASE 语句允许使用类似 IF/ELSE 或 SWITCH 的功能,并且具有符合 ANSI 标准的优点。该查询适用于 SQL Server、Oracle、MySQL...

    【讨论】:

    • 感谢 Rexem。就像 ChssPly76 一样,我在这里有一个后续问题。我正在尝试使用该新表列(颜色)来加入另一个表,但连接给了我这个错误:“on 子句”中的未知列“颜色”。有什么想法吗?
    • 我在此处发布了后续消息:stackoverflow.com/questions/1642147/…。已经有人回答了。谢谢!
    【解决方案3】:

    查看MySQL Reference Manual 中的CASE 语句。

    【讨论】:

      【解决方案4】:

      Control Flow Function documentation 应该可以帮助您。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-07-06
        • 2013-04-07
        • 2011-06-22
        • 2014-11-03
        • 2014-02-15
        • 2020-10-12
        • 2016-06-17
        相关资源
        最近更新 更多