MYSQL如果选择查询返回0行,那么另一个选择查询?

如果select * from table where x=1返回0行,那么我需要select * from table where x=2 [or

some other query]。是否可以在带有条件语句的单个MySQL查询中执行此操作?

所有答案均UNION有效,但前提是两个查询均从同一表(或具有相同列数的表)中选择。如果第二个查询应用于具有联接的其他表上怎么办?

让我写下我的查询以使问题更清楚:

第一:

SELECT  table1.a, table2.b  from table1 LEFT JOIN table2 ON table2.x= table1.x

WHERE .....

如果第一个结果为空,则:

第二名:

SELECT table1.a FROM table1 

WHERE ....

如果返回第一个查询,我将使用第一个查询的行,否则将使用第二个查询。

回答:

从我刚刚进行的快速测试来看,这似乎可行,并且无需检查x=1两次是否存在。

SELECT SQL_CALC_FOUND_ROWS *

FROM mytable

WHERE x = 1

UNION ALL

SELECT *

FROM mytable

WHERE

FOUND_ROWS() = 0 AND x = 2;

编辑:在您对问题的澄清后,显然上述两个查询需要与UNION兼容才能起作用。

您更新的问题的答案是“否”。这在单个查询中是不可能的。您将需要使用一些条件过程逻辑来执行所需的查询。

以上是 MYSQL如果选择查询返回0行,那么另一个选择查询? 的全部内容, 来源链接: utcz.com/qa/414900.html

回到顶部