对照另一个表SQL检查一个表
我从表1中得到了一份人员名单对照另一个表SQL检查一个表,sql,sql-server,Sql,Sql Server,我从表1中得到了一份人员名单 SELECT UA.user FROM UserAcct UA 我有另一个表,我需要检查,以确保用户没有列在表2中 LEFT OUTER JOIN AccountsLog AL ON AL.user = UA.user 最终,我要做的是确保表1中的人员对表2执行了操作,否则将返回他们的姓名。执行此操作将导致其名称显示在表2中。非常感谢您的帮助。如果这还不够,我很乐意尝试进一步阐述。谢谢 因此,如果我理解正确,您希望从User获得AccountsLog中不存在的任
SELECT UA.user FROM UserAcct UA
我有另一个表,我需要检查,以确保用户没有列在表2中
LEFT OUTER JOIN AccountsLog AL ON AL.user = UA.user
最终,我要做的是确保表1中的人员对表2执行了操作,否则将返回他们的姓名。执行此操作将导致其名称显示在表2中。非常感谢您的帮助。如果这还不够,我很乐意尝试进一步阐述。谢谢 因此,如果我理解正确,您希望从
User
获得AccountsLog
中不存在的任何内容,我认为您走对了方向
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
关于因此,如果我理解正确,您希望从
User
获得AccountsLog
中不存在的任何内容,我认为您的想法是正确的
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
关于当您执行左外部联接以查找表a中不在表B中的记录时,只需查找空值即可 因此,当您将OUTER JOIN表留在on AL.user=UA.user上时,您可以使用以下子句查找缺少的记录:
WHERE AL.user IS NULL
当执行左外部联接以查找表a中不在表B中的记录时,只需查找空值 因此,当您将OUTER JOIN表留在on AL.user=UA.user上时,您可以使用以下子句查找缺少的记录:
WHERE AL.user IS NULL
这将仅在UA上提供用户,而不在AL上提供用户
SELECT UA.user FROM UserAcct UA
MINUS
SELECT AL.user FROM AccountsLog AL
编辑:-对于SQL server的使用,除了而不是减号(由Oracle支持)这将为用户提供仅在UA上,而不在AL上的功能
SELECT UA.user FROM UserAcct UA
MINUS
SELECT AL.user FROM AccountsLog AL
编辑:-对于SQL server,请使用除外而不是减号(Oracle支持)如果您的SQL版本支持它,请尝试使用Not Exists。我发现它比“左外部联接和筛选空值”更快。如果您的SQL版本支持它,请尝试使用Not Exists。我发现它比“左外部联接和筛选空值”要快。在联接中尝试
WHERE AL.User为空
,或者在存在的位置尝试(选择…
),那么这有什么问题?你到底想干什么?你能说清楚吗?@WEI_DBA是的,是的,我知道…:)请在您的加入中尝试WHERE AL.User为NULL
,或者尝试WHERE EXISTS(选择…)
那么这有什么问题?你到底想干什么?你能说清楚吗?@WEI_DBA是的,是的,我知道…:)<代码>减号是Oracle特定的运算符。在SQL标准(和SQL Server)中,除了哦,是的。。我没有看到它的sql server。然后,它应该是except,而不是减号减号是一个特定于Oracle的运算符。在SQL标准(和SQL Server)中,除了
哦,是的。。我没有看到它的sql server。那么它应该是除,而不是负