我有两个通过多对多关系链接的表。表一包含具有ID的所有选民,表二包含具有ID的所有选举,表三使用其ID链接两个表。
[并非所有选民在所有选举中都投票。我想查询多对多关系,以找到未投票的每个选民的选举。我使用的是MySQL。
一种典型的解决方案是用cross join
生成所有可能的选民和选举组合,然后尝试用left join
生成连接表:在没有记录匹配的地方,您知道选民错过了选举。 >
考虑:
select v.voter_id, e.election_id
from voters v
cross join elections e
left join voter_elections ve
on ve.voter_id = v.voter_id
and ve.election_id = e.election_id
where ve.voter_id is null