首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用单个if条件选择多列

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

Stack Overflow用户
提问于 2017-09-20 22:01:27
回答 3查看 2.2K关注 0票数 0

我已经尝试了下面的查询,但不知何故它对我不起作用。有人能告诉我为什么吗?

查询:

代码语言:javascript
复制
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"
EN

回答 3

Stack Overflow用户

发布于 2017-09-20 22:04:58

这种语法是不正确的,您不能以这种方式使用if

但是你可以这样做:

代码语言:javascript
复制
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,column5column6,column7,column8应该分别具有相同的数据类型。否则,您可能需要将它们转换为一种数据类型。(感谢您的留言@Peter Abolins)

票数 3
EN

Stack Overflow用户

发布于 2017-09-20 22:10:43

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

在mysql中,它更像是

代码语言:javascript
复制
if(some condition, is true return this, is false return this)

所以

代码语言:javascript
复制
if(1 = 1, do this, else do this)

您也可以将它们链接在一起

代码语言:javascript
复制
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也可以。祝你好运!

票数 0
EN

Stack Overflow用户

发布于 2019-07-28 22:12:11

在与这个问题作斗争之后,我来自未来。对于它可能关注的对象,出于自己的原因使用UNION语句,您最好使用JSON_OBJECT语句:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46324170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档