检查另一个表SQL的表

时间:2017-10-11 17:14:19

标签: sql sql-server

所以我列出了从表1中获得的人员。

SELECT UA.user FROM UserAcct UA

我需要检查另一个表,以确保用户未在表2中列出。

LEFT OUTER JOIN AccountsLog AL ON AL.user = UA.user

最终我要做的是确保表1中的人员已对表2执行了操作,否则将返回其名称。执行此操作将导致其名称显示在表2中。非常感谢此处的任何帮助。如果这些信息不够充分,我很乐意再详细说明。谢谢!

4 个答案:

答案 0 :(得分:2)

当您执行左外连接以查找表A中不在表B中的记录时,只需查找NULL。

因此当您在ON AL.user = UA.user上LEFT OUTER JOIN表时,您可以找到包含以下子句的缺失记录:

WHERE AL.user IS NULL

答案 1 :(得分:1)

因此,如果我理解正确,您需要UserAccountsLog中不存在的任何内容,我认为您已走上正轨

SELECT UA.user FROM UserAcct UA
LEFT OUTER JOIN AccountsLog AL ON UA.user = AL.user
WHER AL.User is null -- this will give you anything that is on user and not in accountslog

此致

答案 2 :(得分:0)

这将仅为用户提供UA而非AL

SELECT UA.user FROM UserAcct UA
MINUS
SELECT AL.user FROM AccountsLog AL 

编辑: - 对于SQL Server,使用EXCEPT而不是MINUS(由Oracle支持)

答案 3 :(得分:0)

如果您的SQL版本支持它,请尝试使用Not Exists。 Subqueries with NOT EXISTS。我发现它比“左外连接和过滤空值”更快。