Sql 仅当上一次查询没有结果时才执行查询
我执行以下查询(1): 仅当前一个查询没有结果时,我才需要执行第二(2)个查询Sql 仅当上一次查询没有结果时才执行查询,sql,mysql,union,limit,Sql,Mysql,Union,Limit,我执行以下查询(1): 仅当前一个查询没有结果时,我才需要执行第二(2)个查询 (2)SELECT * FROM t1 WHERE title LIKE '%key%' LIMIT 1 基本上,我只需要1行谁得到了最接近我的钥匙标题 Atm我使用一个带有自定义字段的联合查询对其进行排序,并使用一个限制1。问题是我不想做其他人的查询,如果第一个已经做了结果 谢谢在一条SQL语句中没有一种标准的方式来表示“当且仅当查询Q1不返回任何内容时才执行查询Q2” 适度接近的方法是: SELECT * FR
(2)SELECT * FROM t1 WHERE title LIKE '%key%' LIMIT 1
基本上,我只需要1行谁得到了最接近我的钥匙标题
Atm我使用一个带有自定义字段的联合查询对其进行排序,并使用一个限制1。问题是我不想做其他人的查询,如果第一个已经做了结果
谢谢在一条SQL语句中没有一种标准的方式来表示“当且仅当查询Q1不返回任何内容时才执行查询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
问题在于优化器是否足够智能,能够意识到notexists子查询是联合的前半部分。看看mysql全文搜索,它的效率更高,您可以按相关的顺序进行排序
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