【问题标题】:Filtering data in tables过滤表中的数据
【发布时间】:2020-09-23 09:04:15
【问题描述】:

我有两张桌子account_agentbulk_index。各表数据如下

account_agent

id         name         
1          Tom           
2          Brad           
3          John           
4          Jan        
5          Bartosz 

account_agent to filter

id         name         
1          Tom              
3          John              
5          Bartosz 

使用这些表,我想创建一个规范化视图,其中包含第一个表中的所有代理,但第二个表中没有代理。

account_agent_filtered

name         code         
2            Brad 
4            Jan  

我有很多数据,使用交叉连接我可以做相反的事情,但现在我不想匹配。我想过滤,但我不知道该怎么做。

【问题讨论】:

  • @GordonLinoff 我认为它被否决了,因为找到解决方案的最简单方法是阅读关于 LEFT JOIN 的内容,甚至是一些东西......任何文档中都描述了 LEFT JOIN WHERE IS NULL。

标签: mysql sql select


【解决方案1】:

不幸的是,MySQL 没有 except 集合运算符,但您可以使用 exists 模拟这种行为:

SELECT *
FROM   account_agent aa
WHERE  NOT EXISTS (SELECT *
                   FROM   account_agent_to_filter aatf
                   WHERE  aa.id = aatf.id AND aa.name = aatf.name)

【讨论】:

    【解决方案2】:

    除了Mureinikanswer

    SELECT t1.*
    FROM account_agent t1
    LEFT JOIN account_agent_to_filter t2 USING (id, name)
    WHERE t2.id IS NULL
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多