检查同一MySQL表中的重复

时间:2017-10-14 18:04:19

标签: mysql sql

id  district    icnum
 1     10       111
 2     10       112
 3     10       113
 4     10       114
 5     10       111
 6     20       115
 7     20       116
 8     20       117
 9     20       111
10     20       111
11     30       118
12     30       119
13     30       111
14     30       111
15     30       120

我有上面的示例表。我想创建一个mysql查询来检查'icnum'的重复,摘要/计数以及重复列表。什么

我想要的是:

在'20'区内找到'10'区内有多少'icnum' 在'30'区内找到了'10'区内有多少'icnum' 在'30'区内,'20'区内有多少'icnum'。

我已经尝试了在stackoverflow中找到的几个查询,但它没有给我我想要的结果。我是复杂sql查询的新手。

因此,我应该为每个区域单独执行查询以获得结果。请在stackoverflow中掌握MySQL,帮助我解决这个问题。 TQ

以下是我想要的示例输出:

district    district    count(*)
   10         20          2
   10         30          2
   20         30          2

1 个答案:

答案 0 :(得分:0)

您可以使用自联接来执行此操作:

select t1.district, t2.district, count(distinct t1.icnum)
from t t1 join
     t t2
     on t1.icnum = t2.icnum and t1.district < t2.district
group by t1.district, t2.district;

注意:

  • 如果您没有重复项,请使用count(*)代替count(*)
  • 这不会返回没有任何共同点的对(虽然可以修复)。