连接表并选择不存在的位置

l7wslrjt  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(314)

我有以下表格:

员工:一张有我所有员工的table
团队:创建了团队的表格
team\ u employees:一个表,其中包含一个团队与一个员工列表的关系。
所以,基本上我需要的是在一个团队中选择所有没有团队的员工。例如,如果您看到,在team#employees表中,id#team#2没有id#employee2。我要查找的查询select应该为我提供id employee#2(但仅限于团队id#2)
我已经试过了 LEFT JOIN 像这样,但没有运气,因为我认为它会给我一个空在队\id字段,但没有:

SELECT te.id_team AS id_team, e.id, e.name
FROM employees e
LEFT JOIN team_employees te
ON te.id_employee = e.id
WHERE id_team = 2
GROUP BY e.id

谢谢你的帮助!

btqmn9zl

btqmn9zl1#

使用这种形式的左连接

SELECT te.id_team AS id_team, e.id, e.name
FROM employees e
LEFT JOIN team_employees te ON te.id_employee = e.id AND te.id_team = 2
WHERE te.id_team IS NULL

有时被称为“左连接”。你需要做的是 e.id_team = 2 而不是where子句。然后使用where子句定位与team表不匹配的所有行。
备选方案:

SELECT e.*
FROM employees e
WHERE NOT EXISTS (
     select null 
     from team_employees te
     where te.id_employee = e.id AND te.id_team = 2
     )

相关问题