0

我有两张桌子USERUSER_BAL. USER _ID是表的主键和USER表的外键USER_BAL。我需要比较USER_ID两个表的列,以确保任何值USER_BAL.USER_IDUSER.USER_ID. 我还需要输出剩下的。

4

2 回答 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 回答