0

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

我在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;

谢谢

4

2 回答 2

2

尝试这样的事情:

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'
于 2013-11-05T08:12:54.403 回答
0

我不确定,但试试这个-

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

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

于 2013-11-05T08:14:50.453 回答