SQL查询从一个表中选择不在另一个表中的行

时间:2016-09-21 13:08:16

标签: mysql join

注册 group_members

Registration Table
id  name  
-------                
1   A    
2   B    
3   C
4   D

group_members Table
name  Gid 
-------                
A   01    
B   01    
C   02

我需要从注册表中获取 group_members 表中不包含 Gid为02 的成员的名称。 输出必须明显 A,B和D 。 但我不知道如何实现这一目标。请帮助。谢谢

2 个答案:

答案 0 :(得分:1)

试试这个:

SELECT t1.*
FROM Registration AS t1
LEFT JOIN Group_members AS t2 ON t1.name = t2.name AND t2.Gid = '02'
WHERE t2.name IS NULL 

这将过滤掉group_members表中与Gid = '02'匹配的所有记录。

答案 1 :(得分:1)

这应该有效

select name from
Registration reg where 
not exists 
(select null 
from group_members gm
where gm.name = reg.name
and gm.gid = '02')