我有多个网站,当一个用户在一个网站注册时,我们会自动在几个网站上为他们创建一个帐户。
我们管理这个的“中央”数据库有一个clients表、一个sites表和一个clients\u sites表作为链接。
clients table
-------------
id | name
1 | Larry
2 | Curly
sites table
-----------
id | url
1 | http://one.com
2 | http://two.com
clients_sites
--------------
id | clients_id | sites_id
1 | 1 | 1
2 | 1 | 2
3 | 2 | 1
我需要找到一个有效的查询,找到客户谁没有在每个网站的链接表中列出。
所以在这个例子中,curly没有列在site2中。
是否有一个sql查询来查找每个站点的链接表中没有出现的客户端?
1条答案
按热度按时间iq3niunx1#
我们可以考虑
clients_id
与sites_id
,使用Cross Join
在派生表中。现在,我们可以使用“反连接”来只考虑那些在表中找不到匹配行的“组合”
clients_sites
表,使用Left Join
以及clients_sites.id IS NULL
(无匹配行)尝试以下查询: