3

使用 MySQL 和 php,我将如何在单个查询中获取与某个查询匹配的所有结果,但如果未找到任何结果,则找到所有默认结果?例如我有这个查询:

SELECT * FROM table1 WHERE typeid = 5

如果从下面的查询中没有找到结果,那么我想从 table1 中找到 typeid 为 1 的所有结果:

SELECT * FROM table1 WHERE typeid = 1

如何在单个查询中做到这一点?如果我尝试以下查询,我会得到 5 和 1:

SELECT * FROM table1 WHERE typeid = 5 OR typeid = 1

我只想查询 table1 以查找分配给 typeid 5 的所有记录,如果没有找到结果,则在单个查询中获取分配给 typeid = 1 的所有结果。我怎样才能做到这一点?还是我必须有 2 个查询?

编辑

对于返回的多条记录,我需要这个,而不是一条记录。

4

3 回答 3

5

这个怎么样?

SELECT * FROM table1
WHERE CASE WHEN (SELECT COUNT(1) FROM table1 WHERE typeid = 5) > 0 THEN
    typeid = 5
ELSE
    typeid = 1
END;
于 2012-05-17T17:53:44.980 回答
2
SELECT *
FROM   table1
WHERE  typeid = IF((SELECT COUNT(*) FROM table1 WHERE typeid = 5), 1, 5);
于 2012-05-17T18:07:38.187 回答
0
    SELECT * 
    FROM table1 
    WHERE typeid = 5
  UNION ALL
    SELECT * 
    FROM table1 
    WHERE typeid = 1
      AND NOT EXISTS
          ( SELECT * 
            FROM table1 
            WHERE typeid = 5
          ) ;
于 2012-05-17T18:09:49.513 回答