使用单个if条件选择多个列

时间:2017-09-20 14:01:27

标签: mysql

我已经尝试了以下查询,但不知怎的,它不适合我。谁能告诉我为什么?

查询:

SELECT column1
     , column2
     , IF(start <="20:00:00" AND end >= "20:00:00")
          THEN (column3,column4,column5)
          ELSE (column6,column7,column8)
       END IF
     , column9
     , column10
FROM table_1
WHERE id ="1"

3 个答案:

答案 0 :(得分:3)

此语法不详,您不能以这种方式使用if ($mysqli->query("UPDATE ads SET adimageurl='$adurllink', adlinkurl='$adurl', adalternatetext='$alternatetext', uploaded='1' WHERE hash='$adid' AND uploaded='0'") === TRUE) { echo 'SUCCESS'; } if ($mysqli->query("UPDATE ads SET adimageurl='$adurllink', adlinkurl='$adurl', adalternatetext='$alternatetext', uploaded='1' WHERE hash='$adid' AND uploaded='0'") === FALSE) { echo 'FAILED'; }

但你可以这样做:

if

但是,为了使其正常工作,列select column1,column2, column3,column4,column5,column9,column10 from table 1 where id ="1" AND (start <="20:00:00" AND end >= "20:00:00") UNION ALL select column1,column2, column6,column7,column8,column9,column10 from table 1 where id ="1" AND (start >= "20:00:00" AND end <= "20:00:00"); column3,column4,column5应分别具有相同的数据类型。否则,您可能需要将它们转换为一种数据类型。 (感谢@Peter Abolins的说明)

答案 1 :(得分:0)

这不是if语句在mysql中的工作方式。

在mysql中它更像是

if(some condition, is true return this, is false return this)

所以

if(1 = 1, do this, else do this)

您也可以链接它们,所以

if(1 = 1, if(2 = 2, do this, else this), else this)

如果你来自编程背景,可能会很混乱,但我认为你应该查看mysql docs on control flow functions

查看this answer on stack overflow,了解您正在尝试完成的工作。我认为你最好使用案例陈述,但if也可以。祝你好运!

答案 2 :(得分:0)

与这个问题作斗争后,我来自未来。 对于可能关注的对象以及出于自身原因使用UNION语句的对象,您也可以使用JSON_OBJECT语句:

SELECT column1
     , column2
     , (IF(start <="20:00:00" AND end >= "20:00:00"),
          JSON_OBJECT("column3", column3,
                      "column4", column4,
                      "column5", column5
                      ) as result,
          JSON_OBJECT("column6", column6
                      "column7", column7
                      "column8", column8
                      ) as result,
     , column9
     , column10
FROM table_1
WHERE id ="1"

在MySQL 5.7之后可以找到对JSON运算符的支持。 https://dev.mysql.com/doc/refman/5.7/en/json.html