我目前正在尝试执行一个SQL查询,该查询可以检测SELECT查询是否返回任何内容,然后再执行另一个查询,如果是这种情况。
这就是我的意思:
IF SELECT * FROM table WHERE criteria = criteria RETURNS NO ROWS
THEN SELECT * FROM table WHERE criteria2 = criteria2
这可能吗?我不认为空回复计为" null"所以我有点麻烦。
答案 0 :(得分:6)
您可以在一个语句中执行此操作,假设列相同:
SELECT *
FROM table
WHERE criteria = criteria
UNION ALL
SELECT *
FROM table
WHERE criteria2 = criteria2 AND
NOT EXISTS (SELECT 1 FROM table WHERE criteria = criteria);
答案 1 :(得分:3)
您可以使用NOT EXISTS
:
SELECT * FROM table WHERE criteria2 = criteria2
and not exists (
SELECT * FROM table WHERE criteria = criteria
)
union all
SELECT * FROM table WHERE criteria = criteria;
此处NOT EXISTS
确保返回UNION ALL的任一部分。如果第二个criteria = criteria
通过,则NOT EXISTS
将返回false,因此,只有上述查询的第二部分返回结果。如果没有,则表示没有criteria = criteria
的行,NOT EXISTS将返回true,因此只有第一部分返回数据。