仅当先前查询没有结果时才执行查询
我执行此查询(1):
(1)SELECT * FROM t1 WHERE title LIKE 'key%' LIMIT 1
仅当上一个查询没有结果时,我才需要执行第二个(2)查询,
(2)SELECT * FROM t1 WHERE title LIKE '%key%' LIMIT 1
基本上我只需要 1 行获得与我的键最接近的标题。
Atm 我正在使用带有自定义字段的 UNION 查询来对其进行排序,并且 LIMIT 1。问题是,如果第一个查询已经得到结果,我不想执行其他查询。
谢谢
I do this query(1):
(1)SELECT * FROM t1 WHERE title LIKE 'key%' LIMIT 1
I need to do a second(2) query only if this previous query has no results
(2)SELECT * FROM t1 WHERE title LIKE '%key%' LIMIT 1
basically i need only 1 row who got the most close title to my key.
Atm i am using an UNION query with a custom field to order it and a LIMIT 1. Problem is I don't want to do the others query if already the first made the result.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
没有标准的方法可以在单个 SQL 语句中表示“当且仅当查询 Q1 不返回任何内容时执行查询 Q2”。
适度接近的方法是:
问题是优化器是否足够智能,能够意识到 NOT EXISTS 子查询是 UNION 的前半部分。
There isn't a standard way to say 'execute query Q2 if and only if query Q1 returns nothing' in a single SQL statement.
The moderately close approach would be:
The issue is whether the optimizer would be intelligent enough to realize that the NOT EXISTS sub-query is the first half of the UNION.