我已经尝试了以下查询,但不知怎的,它不适合我。谁能告诉我为什么?
查询:
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"
答案 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