如何用动态语句优先检测某个特定条件的内容,如果没有就检索另外一个指定条件的结果集

chilli6519 2017-09-29 09:08:13
有一个数据表 table1 ,包含:
id tvalue ownerid
1 2 0
2 3 5
3 2 0
4 8 0
5 12 5

希望优先检测 ownerid = 5 的结果集,如果没有就提供ownerid = 0的
如何用一条动态sql 解决 而不用多次查询解决,谢谢
...全文
176 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2017-09-29
  • 打赏
  • 举报
回复
select * form table1 where ownerid in (0, 5) order by ownerid desc limit 1
zjcxc 2017-09-29
  • 打赏
  • 举报
回复
如果是只相取最先满足条件的一条,则在最后加上 limit 1 如果不只要 ownerid  in(5, 0) 中最优先的,则加上 where ownerid  in (5, 0)
zjcxc 2017-09-29
  • 打赏
  • 举报
回复
如果只是按照你要的顺序 ORDER BY CASE WHEN  owneriTHEN 0 WHEN ownerid = 0 THEN 1 ELSE 2 END
chilli6519 2017-09-29
  • 打赏
  • 举报
回复
引用 4 楼 zjcxc 的回复:
select * form table1 where ownerid in (0, 5) order by ownerid desc limit 1
糊涂,巧
chilli6519 2017-09-29
  • 打赏
  • 举报
回复
引用 2 楼 zjcxc 的回复:
如果是只相取最先满足条件的一条,则在最后加上 limit 1 如果不只要 ownerid  in(5, 0) 中最优先的,则加上 where ownerid  in (5, 0)
对,我只需要满足其中的一个即可 , 从上面的数据, 以 5 优先,如果 5 没有就是 0

56,685

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧