过滤与另一个表匹配的查询
Posted
技术标签:
【中文标题】过滤与另一个表匹配的查询【英文标题】:Filter query on matching with another table 【发布时间】:2017-08-28 12:57:46 【问题描述】:我有一张表,其中有订阅者,他们有两个字段:国家和语言。 另一个表只有两列,国家和语言。 我需要过滤订阅者,排除那些国家和语言的组合与映射表中的组合匹配的订阅者。
我有
SELECT * from Subscribers
LEFT JOIN Mapping on Mapping.Country != Subscribers.Country
AND Mapping.Language != Subscribers.Language
但是,它似乎根本没有过滤。 LEFT JOIN 是正确的方向吗?
【问题讨论】:
在你修复你的数据模型之前,你不应该向任何方向“走”...为什么冗余,为什么订阅者有国家和语言——而不仅仅是 id i> 第二个表中对应的记录...? 【参考方案1】:使用内连接:-
SELECT * from Subscribers
inner join Mapping on Mapping.Country != Subscribers.Country
AND Mapping.Language != Subscribers.Language
【讨论】:
【参考方案2】:我会尝试不同的方法,像这样:
SELECT * from Subscribers
LEFT JOIN Mapping on Mapping.Country = Subscribers.Country
AND Mapping.Language = Subscribers.Language
WHERE Mapping.Country IS NULL
我正在做的是加入我们不想要的匹配表,并使用“Where”子句排除那些不需要的匹配。
希望这样的事情有所帮助!
【讨论】:
以上是关于过滤与另一个表匹配的查询的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 查询使用 BETWEEN 过滤器带来不匹配的数据