首页 新闻 搜索 专区 学院

SQL 多对多 查询不存在问题。

0
悬赏园豆:20 [已解决问题] 解决于 2021-01-04 19:00

company 公司表
id
companyname
数据
id companyname
1 公司1
2 公司2

user 用户
id
username
数据
id username
1 用户1
2 用户2
3 用户3
4 用户4
5 用户5
6 用户6

companyuser 表company表和user表的关系,他们多对多
id
companyid
userid
数据
id companyid userid
1 1 2
2 2 1

怎么查询id=1公司里面不存在user的员工集合
我现在使用的方法就是:

select a.* from [user] a where NOT EXISTS (SELECT 1
                      FROM [companyuser]  b
                      WHERE  a.id = b.userid and b.companyid =1)

还有没有更好的办法,或者直接建立视图?

低调De程序猿的主页 低调De程序猿 | 初学一级 | 园豆:38
提问于:2021-01-04 17:33
< >
分享
最佳答案
1

左连接

select u.* from user u
left join companyuser cu on u.id=cu.userid and cu.companyid=1
where cu.companyid is null
收获园豆:20
E行者 | 小虾三级 |园豆:1741 | 2021-01-04 17:50

非常感谢。

低调De程序猿 | 园豆:38 (初学一级) | 2021-01-04 18:46

这2个表是不是不能做成视图?我之前还是左连接,然后用视图来弄,试了很多次还是不行。

低调De程序猿 | 园豆:38 (初学一级) | 2021-01-04 19:01

@低调De程序猿: 视图里可以用左连接

E行者 | 园豆:1741 (小虾三级) | 2021-01-05 08:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册