Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 仅当上一次查询没有结果时才执行查询_Sql_Mysql_Union_Limit - Fatal编程技术网

Sql 仅当上一次查询没有结果时才执行查询

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

我执行以下查询(1):

仅当前一个查询没有结果时,我才需要执行第二(2)个查询

(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