首页 > 解决方案 > SQL检查条件是否存在或不存在

问题描述

我有以下情况:

我想要select a mission from a table(missions) for a user (userID=?),或者如果用户没有分配到任何任务,我将选择所有任务。

这可以通过 2 个查询来实现:

   Select * from missions where userID = :ID

如果(结果为空)

   Select * from missions 

如果可能的话,我希望将这 2 个 SQL 放在一个 SQL 中

我换句话。用户可以选择管理员分配给他的邮件,也可以处理所有邮件。

标签: mysqlsql

解决方案


你可以试试:

SELECT *
FROM missions
WHERE
    userID = :ID OR
    NOT EXISTS (SELECT 1 FROM missions WHERE userID = :ID);

如果一个或多个记录与 一起存在userID = :ID,则这些记录的第一个条件将为真,并且存在条件也将为假,因此被忽略。如果存在任何记录userID = :ID,则第一个条件将始终为假,因此被忽略,而第二个条件将始终为真,从而返回整个表。


推荐阅读