仅在先前查询没有结果时执行查询

时间:2010-12-26 20:40:23

标签: sql mysql union limit

我做这个查询(1):

(1)SELECT * FROM t1 WHERE title LIKE 'key%' LIMIT 1

我只需要在前一个查询没有结果的情况下进行第二次(2)查询

(2)SELECT * FROM t1 WHERE title LIKE '%key%' LIMIT 1

基本上我只需要一排能获得最接近我的钥匙的人。

我正在使用带有自定义字段的UNION查询对它进行排序和限制1.问题是如果第一次查询结果,我不想进行其他查询。

由于

1 个答案:

答案 0 :(得分:2)

当且仅当查询Q1在单个SQL语句中没有返回任何内容时,没有标准的方式来说'执行查询Q2。

适度接近的方法是:

SELECT * FROM t1 WHERE title LIKE 'key%' LIMIT 1
UNION
SELECT * FROM t1 WHERE title LIKE '%key%'
   AND NOT EXISTS (SELECT * FROM t1 WHERE title LIKE 'key%')
 LIMIT 1

问题在于优化器是否足够智能以实现NOT EXISTS子查询是UNION的前半部分。