Mysql WHERE NOT EXISTS(查询)OR(查询)

时间:2013-06-24 23:18:11

标签: php mysql

是否可以编写一个查询来检查子查询是否正确而不是一个?

SELECT  *
FROM    employees e
WHERE   NOT EXISTS
        (
        SELECT  null 
        FROM    eotm_dyn d
        WHERE   d.employeeID = e.id
        ) OR (select * FROM table c WHERE c.employeeID = e.id)

2 个答案:

答案 0 :(得分:0)

你的问题有点难以理解,但我猜这是你要求的。 它将返回employees表中没有表eotm_dyntable中任何相关行的记录。

SELECT  *
FROM    employees e
WHERE  e.id NOT IN
    (
        (SELECT  employeeID 
        FROM    eotm_dyn)
     UNION
        (SELECT employeeID 
        FROM table)
    )

答案 1 :(得分:0)

是的,只需将OR条件更改为另一个EXISTS表达式:

SELECT  *
FROM    employees e
WHERE   NOT EXISTS
           (
             SELECT  null 
             FROM    eotm_dyn d
             WHERE   d.employeeID = e.id
           ) 
    AND NOT EXISTS
           (
             select null
             FROM   table c
             WHERE  c.employeeID = e.id
           )

还要猜测你的意图。这将检查 BOTH 子查询的记录是否不存在。我不确定你的意思,如果你想检查一个 OR 另一个。

更新:尝试再次想象,也许你打算做一个OR EXISTS

SELECT  *
FROM    employees e
WHERE   NOT EXISTS
           (
             SELECT  null 
             FROM    eotm_dyn d
             WHERE   d.employeeID = e.id
           ) 
     OR EXISTS
           (
             select null
             FROM   table c
             WHERE  c.employeeID = e.id
           )

这会在employees中找到<{1}}中的eotm_dyn ARE 的记录。