+-------------------------+
| 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
+-------------------------+
このテーブルで重複するレコードを2つの基準で見つけたいと思います。1つ目はSKU、2つ目はUPCです。この場合、重複するレコードは[1,2,3,4]と[5,6]です。sku番号が一致しているため、行[1,2]は重複しています。UPC番号が一致しているため、行[1,3,4]は重複しています。最初の重複グループは次のようになります。
GROUP1 *
+-------------------------+
| 001 | 111 | NAME1 | 1
| 001 | null | NAME2 | 2
| 0-1 | 111 | NAME3 | 3
| -01 | 111 | NAME4 | 4
+-------------------------+
2番目の重複グループは次のようになります。
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
このクエリは空の結果を返します。