是否可以编写一个查询来检查子查询是否正确而不是一个?
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)
答案 0 :(得分:0)
你的问题有点难以理解,但我猜这是你要求的。
它将返回employees
表中没有表eotm_dyn
和table
中任何相关行的记录。
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 的记录。