我已经尝试了下面的查询,但不知何故它对我不起作用。有人能告诉我为什么吗?
查询:
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"发布于 2017-09-20 22:04:58
这种语法是不正确的,您不能以这种方式使用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和column6,column7,column8应该分别具有相同的数据类型。否则,您可能需要将它们转换为一种数据类型。(感谢您的留言@Peter Abolins)
发布于 2017-09-20 22:10:43
这不是mysql中if语句的工作方式。
在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,更好地了解您要实现的目标。我认为使用case语句会更好,但if也可以。祝你好运!
发布于 2019-07-28 22:12:11
在与这个问题作斗争之后,我来自未来。对于它可能关注的对象,出于自己的原因使用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
https://stackoverflow.com/questions/46324170
复制相似问题