如果某些条件为真,如何简单地返回一列?

时间:2012-09-20 16:22:24

标签: mysql sql

我有一张名为A的表:

DATETIME_START || DATETIME_END || VALUE 
 --------------------------------------- 
2012-07-23     || 2013-07-23   ||  coffee  
2011-13-11     || 2013-01-09   ||  airport

我要做的就是 - 如果请求时间介于DATETIME_STARTDATETIME_END之间,只需返回VALUE

我试过了:

SELECT 
IF (NOW() BETWEEN A.DATETIME_START AND A.DATETIME_END, VALUE,NULL)
FROM A

但结果是我在结果中得到了字符串"IF (NOW() BETWEEN A.DATETIME_START AND A.DATETIME_END, VALUE,NULL)"

(我不想把条件放在WHERE中)

为什么?

3 个答案:

答案 0 :(得分:2)

SELECT VALUE FROM A
WHERE NOW() BETWEEN A.DATETIME_START AND A.DATETIME_END

答案 1 :(得分:2)

你在找这个:

SELECT
    CASE 
        WHEN NOW() BETWEEN A.DATETIME_START AND A.DATETIME_END THEN VALUE
        ELSE NULL
    END
FROM A

答案 2 :(得分:2)

列名称将是您实际选择的任何名称。说你的选择看起来像这样:

SELECT
    IF (NOW() BETWEEN A.DATETIME_START AND A.DATETIME_END, ColumnA, ColumnB)

当您可能从2列获得结果时,结果集列名称应该是什么?

您甚至可能无法从任何列中进行选择:

SELECT
    IF(0 < 1, 'True', 'False')

在您的特定情况下,您并不真正需要IF语句,但是当您确实需要您可以使用SELECT中的条件或功能 Alias  自己确定列名。

SELECT
    IF(0 < 1, 'True', 'False') AS YourName
  # or
    IF(0 < 1, 'True', 'False') AS `Your name with spaces`