我有两张桌子USER
和USER_BAL
. USER _ID
是表的主键和USER
表的外键USER_BAL
。我需要比较USER_ID
两个表的列,以确保任何值USER_BAL.USER_ID
在USER.USER_ID
. 我还需要输出剩下的。
问问题
888 次
2 回答
1
以下将为您提供在 User_Bal 中但不在 User 中具有条目的所有用户:
SELECT DISTINCT User_Bal.UserID
From User_Bal
Where User_Bal.UserID NOT IN
(
SELECT User.UserID
FROM USER
)
如果您需要在 User 中而不是在 User_Bal 中获取 UserID,并且在 User_Bal 中而不是在 User 中获取 UserID,则 Ivan 的回答是一个很好的起点。
但是,结果将取决于您的数据库架构。User 到 User_Bal 是一对一还是一对多的关系?
如果是一对一的,那么您应该更改架构以使 UserID 同时成为 User_Bal 表的 FK 和 PK。如果是一对多,那么 Ivan 的答案将为同一个 UserID 返回多行。
于 2013-01-28T11:40:44.260 回答
0
尝试这个 :
该查询给出了存在于用户表中的用户 ID。
SELECT USER_BAL.USER_ID
FROM USER_BAL
WHERE EXISTS (
SELECT USER.USER_ID
FROM USER
WHERE USER.USER_ID = USER_BAL.USER_ID
)
此查询给出用户表中不存在的用户 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
)
于 2013-01-29T06:28:07.100 回答