【发布时间】:2012-10-15 14:58:40
【问题描述】:
+-------------------------+
| SKU | UPC | NAME | INVID
+-------------------------+
| 001 | 111 | NAME1 | 1
| 001 | null | NAME2 | 2
| 0-1 | 111 | NAME3 | 3
| -01 | 111 | NAME4 | 4
| 002 | 222 | NAME5 | 5
| 002 | null | NAME6 | 6
| 003 | 333 | NAME7 | 7
+-------------------------+
我想通过两个条件在此表中查找重复记录。首先是SKU,其次是UPC。在这种情况下,重复记录是 [1,2,3,4] 和 [5,6]。 行 [1,2] 是重复的,因为 sku 编号匹配。行 [1,3,4] 是重复的,因为 UPC 编号匹配。 第一个重复组应如下所示:
GROUP1*
+-------------------------+
| 001 | 111 | NAME1 | 1
| 001 | null | NAME2 | 2
| 0-1 | 111 | NAME3 | 3
| -01 | 111 | NAME4 | 4
+-------------------------+
第二个重复组应如下所示:
GROUP2*
+-------------------------+
| 002 | 222 | NAME5 | 5
| 002 | null | NAME6 | 6
+-------------------------+
如何使用 mysql 查询找到这些组? 如果我发现重复记录,我会为表中的任何重复记录设置一个 grouID***。
我试过了,但没有显示所有重复项。
select sku, upc
from inv
WHERE sku is not null
GROUP BY sku, upc HAVING count(sku) > 1 OR count(upc) > 1
这是 SQL 架构:
http://sqlfiddle.com/#!2/4d760/2
此查询返回空结果。
【问题讨论】:
-
那个 sql fiddle 站点非常适合 SQL 问题,感谢您的介绍