我有一个表,其中有多个人链接到多个组。
我有一个程序需要从75588组中带来所有人但是如果这个人如果在2443组中它不能携带。 我正在尝试这样的事情。
SELECT * FROM BRZGRUDB08.BrinksPortal.dbo.tuxg_usuario_grupo WHERE UXG_N_USU_N_CODIGO = 302826
AND ((UXG_N_GRP_N_CODIGO <> 2443) AND (UXG_N_GRP_N_CODIGO = 75588))
例: 人A在一个组中,组75588 人B在两组中,组75588和2443
在仅限选择的人A中必须返回。
但它不起作用,它带来了所有价值。
答案 0 :(得分:1)
将以下示例中的person_id
替换为标识各个人的列。
使用not exists()
:
select *
from BRZGRUDB08.BrinksPortal.dbo.tuxg_usuario_grupo as o
where UXG_N_USU_N_CODIGO = 302826
and UXG_N_GRP_N_CODIGO = 75588
and not exists (
select 1
from BRZGRUDB08.BrinksPortal.dbo.tuxg_usuario_grupo as i
where i.person_id = o.person_id
and i.UXG_N_GRP_N_CODIGO = 2443
)
答案 1 :(得分:0)
进行以下更改:
您的查询应该是这样的:
SELECT * FROM BRZGRUDB08.BrinksPortal.dbo.tuxg_usuario_grupo AS A
WHERE A.UXG_N_GRP_N_CODIGO = 75588 AND A.UXG_N_USU_N_CODIGO = 302826
AND NOT EXISTS (
SELECT 0 FROM BRZGRUDB08.BrinksPortal.dbo.tuxg_usuario_grupo AS B
WHERE B.UXG_N_GRP_N_CODIGO = 2443 AND B.PID = A.PID
)