【问题标题】:Mysql if statement to select multiple rowsMysql if 语句选择多行
【发布时间】:2013-11-05 08:09:22
【问题描述】:

如果条件为真,我需要检索一组数据,如果条件为假,我需要检索一组其他数据。

我在mysql手册中搜索并测试了select case when语句,但是由于我的子查询返回多行,我无法使用它。

用 if 语句编写查询是一种简单的方法吗? (不使用存储过程)

这是我的条件:

select case when ( right(from_unixtime(300 * floor(unix_timestamp(now())/300)) - INTERVAL 10 MINUTE, 8) = '23:50:00' ) then ( select SERVER_KEY from OVERSERVER ) else ( select SERVER_KEY from SERVER  ) end;

谢谢

【问题讨论】:

    标签: mysql select if-statement set case


    【解决方案1】:

    试试这样的:

    select SERVER_KEY from OVERSERVER
    where right(from_unixtime(300 * floor(unix_timestamp(now())/300)) - INTERVAL 10 MINUTE, 8) = '23:50:00'
    union all
    select SERVER_KEY from SERVER
    where right(from_unixtime(300 * floor(unix_timestamp(now())/300)) - INTERVAL 10 MINUTE, 8) != '23:50:00'
    

    【讨论】:

    • 它完全符合我的需要。谢谢。
    【解决方案2】:

    我不确定,但试试这个-

    select SERVER_KEY from (case when ( right(from_unixtime(300 * floor(unix_timestamp(now())/300)) - INTERVAL 10 MINUTE, 8) = '23:50:00' ) then "OVERSERVER" else "SERVER"
    

    select SERVER_KEY from (case when ( right(from_unixtime(300 * floor(unix_timestamp(now())/300)) - INTERVAL 10 MINUTE, 8) = '23:50:00' ) then OVERSERVER else SERVER
    

    注意:以上查询未经测试。

    【讨论】:

      猜你喜欢
      • 2018-08-27
      • 2017-08-13
      • 2012-10-23
      • 2020-07-21
      • 2020-11-09
      • 2017-12-05
      • 2021-04-04
      • 2011-07-12
      • 1970-01-01
      相关资源
      最近更新 更多