mySQL IF列包含特定数据,显示该列,否则显示另一列

时间:2015-11-22 17:25:09

标签: mysql if-statement

我想创建一个基于数据的查询,可以显示三列中的一列。

我有三个日期列:Date1,Date2,Date3。如果Date1不等于'0000-00-00 00:00:00'且小于“<” NOW(),显示该列。如果不满足这两个值,请查看相同查询的Date2。如果不满意,请查看Date3。

这是我尝试拼凑的语法:

SELECT ID, Type, Status, IF (Date1 <> '0000-00-00 00:00:00' AND < NOW() THEN Date1 ELSEIF Date2 <> '0000-00-00 00:00:00' AND < NOW() THEN Date2 ELSEIF Date3 <> '0000-00-00 00:00:00' AND < NOW() THEN Date3) AS col1 FROM tableA

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您无法在查询中使用IF THEN ELSEIF。您正在寻找CASE

SELECT ID, Type, Status,
    (CASE
        WHEN Date1 <> '0000-00-00 00:00:00' AND Date1 < NOW()
            THEN Date1
        WHEN Date2 <> '0000-00-00 00:00:00' AND Date2 < NOW()
            THEN Date2
        WHEN Date3 <> '0000-00-00 00:00:00' AND Date3 < NOW()
            THEN Date3
        ELSE NULL
    END) AS col1
FROM tableA