【问题标题】:Comparing aggregate function across different tables比较不同表的聚合函数
【发布时间】:2014-11-19 10:03:13
【问题描述】:

我有两个表如下,它们有重复的记录。我需要获取两个表中都存在的记录,重复的行和重复的数量在表 2 中更多

Table 1

A     B      C     D     E
192   168    101   100   32
192   168    101   100   32
192   168    101    102  30
192   168    101   102   30

表2

A     B      C     D     E
192   168    101   100   32
192   168    101   100   32
192   168    101   100   32
192   168    101   102   30

例如,我需要获取记录 192 168 101 100 32,因为它在表 2 中的出现次数比在表 1 中更多。我知道如何从单个表中获取计数,但如何将每个元组的计数与两个表进行比较

select A,B,C,D, count(*) from table1 inner join table 2 on table1.A=table2.A and table1.B=table2.B and table1.c=table2.c and table1.d=table2.d group by A,B,C,D having count(table2.A,table2.B,table2.C,table2.D)>count(table1.A,table1.B,table1.c,table.D)

上面的查询在语法上不正确,但我正在考虑做类似的事情

【问题讨论】:

    标签: mysql sql database join


    【解决方案1】:

    试试这个查询:

    SELECT t1.A, t1.B, t1.C, t1.D, t1.E
     FROM (
       SELECT A,B,C,D,E, count(*) AS cnt
       FROM table1
       GROUP BY A,B,C,D,E
      ) t1
     INNER JOIN (
       SELECT A,B,C,D,E, count(*) AS cnt
       FROM table2
       GROUP BY A,B,C,D,E
      ) t2 ON t1.A = t2.A AND t1.B = t2.B AND t1.C = t2.C AND t1.D = t2.D AND t1.E = t2.E
     WHERE t1.cnt < t2.cnt
    

    在这里测试:http://sqlfiddle.com/#!2/994119/1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-12
      • 2021-09-09
      • 2021-12-14
      • 2019-01-29
      相关资源
      最近更新 更多