使用 MySQL 和 php 我将如何在单个查询中获取与某个查询匹配的所有结果,但如果没有找到结果,则找到所有默认结果?例如,我有这个查询:
SELECT * FROM table1 WHERE typeid = 5
如果从下面的查询中找不到结果,那么我想从 table1 中找到类型为 1 的所有结果:
SELECT * FROM table1 WHERE typeid = 1
如何在单个查询中执行此操作?如果我尝试以下查询,我会同时得到 5 和 1:
SELECT * FROM table1 WHERE typeid = 5 OR typeid = 1
我想要的只是查询 table1 以获取分配了 typeid 为 5 的所有记录,如果未找到结果,则在单个查询中获取分配给 typeid = 1 的所有结果。我该怎么做?还是我必须有 2 个查询?
编辑
我需要为返回的多条记录而不是单个记录提供此服务。
这个怎么样?
SELECT * FROM table1
WHERE CASE WHEN (SELECT COUNT(1) FROM table1 WHERE typeid = 5) > 0 THEN
typeid = 5
ELSE
typeid = 1
END;
SELECT *
FROM table1
WHERE typeid = IF((SELECT COUNT(*) FROM table1 WHERE typeid = 5), 1, 5);
SELECT *
FROM table1
WHERE typeid = 5
UNION ALL
SELECT *
FROM table1
WHERE typeid = 1
AND NOT EXISTS
( SELECT *
FROM table1
WHERE typeid = 5
) ;