【问题标题】:How to find count of mismatches in two tables?如何在两个表中找到不匹配的计数?
【发布时间】:2016-03-03 12:45:19
【问题描述】:

我有两个表:RDat1 和 RDat2。我试图找出在 2015-01 到 2015-06 的时间范围内,R1 中的 publisher_id 与 R2 中的 publisher_id 不匹配的发生次数。我根据 queue_id 中的共享键加入这两个表。这是我写的查询,但它总是返回 0...

Select count(*)
from RDat1 r1
join RDat2 r2 on r2.queue_id = r1.queue_id
where r1.publisher_id <> r2.publisher_id and r1.lead_time between 
'2015-01-01 00:00:00' and '2015-06-30 23:59:59' 
;

【问题讨论】:

  • 哪个表表示别名l?
  • 请修改您的问题,在 SQL 中,提供的查询将返回“无法绑定多部分标识符“l.lead_time””,因为您的查询中没有别名为 l 的表。
  • 它是 R1。修改。道歉。
  • 行可以在任何一个表中而不在另一个表中匹配吗? publisher_id 可以为空吗?
  • 使用*JOIN 不是一个好主意。如果表足够大,它将以超时消息中断。

标签: mysql sql


【解决方案1】:

使用左外连接而不是内连接。这将带回 r1 中的所有数据,并且 null 我是 r2。然后,您至少可以查看所有数据以及是否匹配。如果需要,您可以进一步过滤

【讨论】:

    【解决方案2】:
    Select count(publisher_id) from RDat1 r1 where r1.publisher_id not in (select publisher_id from RDat2 r2 where r2.queue_id = r1.queue_id) and r1.lead_time between '2015-01-01 00:00:00' and '2015-06-30 23:59:59' ;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-08
      相关资源
      最近更新 更多