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兼容才能使上述工作正常.
您更新的问题的答案是否定的.这在单个查询中是不可能的.您需要使用一些条件过程逻辑来执行所需的查询.