【问题标题】: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> 第二个表中对应的记录...?

标签: mysql


【解决方案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”子句排除那些不需要的匹配。

    希望这样的事情有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-09
      • 1970-01-01
      • 2013-09-22
      • 2018-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多