一公司中的同一员工可以属于多个不同部门,如何列出还没有分配部门的员工??
员工表:create table emp(id int primary key, name varchar(100))
部门表:create table depart(id int primary key, name varchar(10))
关系表:create table emp_depart(eid int,did int)
注释:eid 是员工表emp的外键, did 是部门表depart的外键
常见查询是(性能不好):
select * from emp where id not in (select eid from emp_depart)
性能好的查询用outer join:
select emp.* from emp left join emp_depart on emp.id=emp_depart.eid where emp_depart.eid is null
员工表:create table emp(id int primary key, name varchar(100))
部门表:create table depart(id int primary key, name varchar(10))
关系表:create table emp_depart(eid int,did int)
注释:eid 是员工表emp的外键, did 是部门表depart的外键
常见查询是(性能不好):
select * from emp where id not in (select eid from emp_depart)
性能好的查询用outer join:
select emp.* from emp left join emp_depart on emp.id=emp_depart.eid where emp_depart.eid is null
本文介绍了一种查询尚未被分配到任何部门的员工的方法。通过使用左连接(left join)替代子查询,可以提高查询效率。
967

被折叠的 条评论
为什么被折叠?



