2013-09-01 169 views
0

我有2个mysql表,成员team_membersMySQL从2个表中选择数据

成员表:

member_id 
name 

team_members表:

team_id 
member_id 

我想选择从成员数据表不属于任何一支球队(不存在于team_members表)

    SELECT * 
        FROM members 
        INNER JOIN team_members 
        ON members.member_id = team_members.member_id 

问题是查询正在做正好相反的我需要的。它是从已经拥有团队的成员中选择数据。 我也试过'!='但是,这给了我所有的领域重复,但不重复属于一个团队的成员。

回答

1

试试这个:

SELECT * 
FROM members a 
WHERE NOT EXISTS (
    SELECT 1 
    FROM team_members b 
    WHERE b.member_id = a.member_id 
) 

声明本语法如下非常接近你如何说出你的问题。有时SQL可能非常简单;但是像任何语言一样,你需要掌握词汇。

+0

是的,我错过了那个重要的语法,只有一个问题,'SELECT 1'是什么? – xRed

+1

这只是一个虚拟值来满足SELECT语法;只是一个占位符。 – BellevueBob

3

使用左连接,并选择有来自team_members表中没有相应的数据记录:

select m.* 
from members as m 
left join team_members as t on m.member_id = t.member_id 
where t.member_id is null