Mysql - 如果找不到特定记录,则抓取默认记录

时间:2012-05-17 17:50:57

标签: php mysql

使用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个查询?

修改

我需要返回多条记录,而不是单条记录。

3 个答案:

答案 0 :(得分:5)

这个怎么样?

SELECT * FROM table1
WHERE CASE WHEN (SELECT COUNT(1) FROM table1 WHERE typeid = 5) > 0 THEN
    typeid = 5
ELSE
    typeid = 1
END;

答案 1 :(得分:2)

SELECT *
FROM   table1
WHERE  typeid = IF((SELECT COUNT(*) FROM table1 WHERE typeid = 5), 1, 5);

答案 2 :(得分:0)

    SELECT * 
    FROM table1 
    WHERE typeid = 5
  UNION ALL
    SELECT * 
    FROM table1 
    WHERE typeid = 1
      AND NOT EXISTS
          ( SELECT * 
            FROM table1 
            WHERE typeid = 5
          ) ;