怎样实现如果一条查询语句结果集为空则执行另一条查询语句

yk2045 2017-11-24 07:14:31
我想用一条语句实现如果第一条语句查询为空则执行第二条查询语句。

第一条
select name from tiaoche where id>(select id from tiaoche where name=(select tiaochegong from paichebiao order by time desc limit 1)) order by id asc limit 2

第二条
select name from tiaoche where id=(select min(id)from tiaoche)

需求是,拿到比上一条数据中更大的数,如果已经是最大,则取最小的数。
...全文
659 5 点赞 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
qq_41671114 2019-03-08
黄金客户空间和客户
[align=center]
[/align]
  • 打赏
  • 举报
回复
zjcxc 2017-11-27
上面的查询可以达到要求,但第1个查询执行了两次,如果你想查询效率好些,那程序上得花点功夫 比如下面这样,程序只发出一次查询(2条 sql, 需要支持批查询, 但这个查询始终是两个结果集,程序上需要判断第一个结果集不为空是取第2个 )
select name from tiaoche where id>(select id from tiaoche where name=(select tiaochegong from paichebiao order by time desc limit 1)) order by id asc limit 2 ;
select name from tiaoche where id=(select min(id)from tiaoche) and found_rows() = 0;
  • 打赏
  • 举报
回复
zjcxc 2017-11-27
select name from tiaoche where id>(select id from tiaoche where name=(select tiaochegong from paichebiao order by time desc limit 1)) order by id asc limit 2  
union all
select name from tiaoche where id=(select min(id)from tiaoche)
where not exists(
select name from tiaoche where id>(select id from tiaoche where name=(select tiaochegong from paichebiao order by time desc limit 1)) order by id asc limit 2  
)
  • 打赏
  • 举报
回复
yk2045 2017-11-26
用代码去实现当然可以了,可是最少需要发送两条语句,如果用一句SQL语句就能查到不是更好吗?
  • 打赏
  • 举报
回复
jc小成 2017-11-26
是代码去实现 不可以吗
  • 打赏
  • 举报
回复
相关推荐
发帖
MySQL
加入

5.5w+

社区成员

MySQL相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2017-11-24 07:14
社区公告
暂无公告