我正在尝试获取确切的列表 不属于内部名单的人我不确定是否应该使用它的另一个联接,NOT EXISTS或NOT IN函数:
SELECT *
FROM db.user
WHERE NOT EXISTS (SELECT DISTINCT email, m.id, u.status
FROM db.member m
INNER JOIN db.user u
ON m.id=u.member_id
)
不幸的是,当我运行此查询时,输出为空白。虽然应该出现大约一百万行。
答案 0 :(得分:1)
您可以尝试下面的查询,该查询包含左外部联接
select distinct u.*
from db.user u
left outer join db.member m on m.id = u.member_id
where m.id is null
或者,如果您坚持使用内部联接,请尝试:
;with cte as (
SELECT DISTINCT m.id,
FROM db.member m
INNER JOIN db.user u
ON m.id=u.member_id
)
select *
from db.users u
where u.member_id not in (select id from cte)
答案 1 :(得分:1)
您已使用U
作为别名,但未定义。另外,使用EXISTS()
时不需要加入。这是EXISTS()
的正确用法:
SELECT *
FROM db.user U
WHERE NOT EXISTS (SELECT 1
FROM db.member m
WHERE m.id=u.member_id
)