我有两张表USER
和USER_BAL
。 USER _ID
是USER
表的主键和USER_BAL
表的外键。我需要比较两个表的USER_ID
列,以确保USER_BAL.USER_ID
中的任何值在USER.USER_ID
中都具有匹配值。我还需要输出左边的那些。
答案 0 :(得分:1)
以下内容将为所有用户提供User_Bal但不包含在User:
中的条目SELECT DISTINCT User_Bal.UserID
From User_Bal
Where User_Bal.UserID NOT IN
(
SELECT User.UserID
FROM USER
)
如果您需要在User中获取UserID,而不是在User_Bal中的User_Bal和UserID中,而不是在User中,则Ivan的答案是一个很好的起点。
但是,结果将取决于您的数据库架构。用户与User_Bal是一对一还是一对多的关系?
如果一对一,那么您应该更改架构,使UserID既是User_Bal表的FK又是PK。如果一对多,那么Ivan的答案将为同一个UserID返回多行。
答案 1 :(得分:0)
试试这个:
此查询提供存在于用户表中的用户标识。
SELECT USER_BAL.USER_ID
FROM USER_BAL
WHERE EXISTS (
SELECT USER.USER_ID
FROM USER
WHERE USER.USER_ID = USER_BAL.USER_ID
)
此查询将不存在的用户标识提供给用户表
SELECT USER_BAL.USER_ID
FROM USER_BAL
WHERE NOT EXISTS (
SELECT USER.USER_ID
FROM USER
WHERE USER.USER_ID = USER_BAL.USER_ID
)