MySQL从2个表中选择数据

时间:2013-09-01 00:22:17

标签: mysql sql select inner-join multiple-tables

我有2个mysql表,成员 team_members

成员表:

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

问题在于查询正在完全正好相反。它正在从已经拥有团队的成员中选择数据。 我也尝试使用'!=',但这会让我复制所有字段,但不会复制属于团队的成员。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

试试这个:

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

请注意,此语法与您如何处理问题非常接近。有时SQL可以很容易;但就像任何语言一样,你需要掌握词汇量。