DB2中的复杂查询

nr9pn0ug  于 2022-11-07  发布在  DB2
关注(0)|答案(3)|浏览(224)

我有一个用户的DB2表和另一个组的DB2表。这两个表通过ID连接。
在"组“表中,我看到了一个用户的许多行,例如:
| 识别码|组别|
| - -|- -|
| 容|管理员|
| 容|普通型|
| 容|相对湿度|
我尝试从表Users中了解不在Group表的Admin组中的所有用户。
我正在执行以下操作:

SELECT ID FROM USER u
JOIN GROUPS g
ON u.ID = g.ID
WHERE g.GROUP NOT IN ('Admin')

但这个问题给了我
| 识别码|组别|
| - -|- -|
| 容|普通型|
| 容|相对湿度|
如何查询以了解该用户是否属于Admin组?

ezykj2lf

ezykj2lf1#

假设,根据你的要求,约翰不应该出现:

SELECT ID FROM USER u
JOIN GROUPS g
ON u.ID = g.ID
WHERE u.ID NOT IN (SELECT ID FROM GROUPS WHERE GROUP = 'Admin')

根据需要从表中删除哪些列,您可以删除该连接。

iyzzxitl

iyzzxitl2#

SELECT ID
FROM USERS U
WHERE NOT EXISTS
(
   SELECT 1 FROM GROUPS G WHERE U.ID=G.ID AND G.GROUP='Admin'
 )

你能试试这个吗

mnowg1ta

mnowg1ta3#

您可以使用LEFT OUTER JOIN并测试组是否不存在:

SELECT u.ID
FROM   USER u
       LEFT OUTER JOIN GROUPS g
       ON (u.ID = g.ID AND g.group = 'Admin')
WHERE  g.id IS NULL;
  • db〈〉小提琴

相关问题