MYSQL如果一个select查询返回0行然后另一个select查询?

emr*_*re 11 mysql select conditional if-statement

如果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 ..... 
Run Code Online (Sandbox Code Playgroud)

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

第二:

SELECT table1.a FROM table1 
WHERE ....
Run Code Online (Sandbox Code Playgroud)

如果返回任何行,我将使用第一个查询中的行,否则将使用第二个行.

Mar*_*ith 15

这似乎是我刚刚做的快速测试,并且无需检查是否存在x=1两次.

SELECT SQL_CALC_FOUND_ROWS *
FROM mytable
WHERE x = 1

UNION ALL

SELECT *
FROM mytable
WHERE 
FOUND_ROWS() = 0 AND x = 2;
Run Code Online (Sandbox Code Playgroud)

编辑:在您澄清问题之后,显然2个查询需要与UNION兼容才能使上述工作正常.

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