Возьмите воображаемую схему, представляющую продукты в MySQL v5.6.41 db:
------------------------------------------------
| id | name | vendor_id | vendor_sku | upc | ean |
|----|------|-----------|------------|-----|-----|
| 1 | AAAA | 2 | 5678 | 456 | 111 | [1]
| 2 | aaaa | 2 | 7878 | 789 | 222 | [1]
| 3 | bbbb | 2 | 1234 | 111 | 333 | [2]
| 4 | cccc | 2 | 1234 | 222 | 444 | [2]
| 5 | dddd | 2 | 1111 | 123 | 555 | [3]
| 6 | eeee | 2 | 2222 | 123 | 666 | [3]
| 7 | ffff | 2 | 3333 | 333 | 777 | [4]
| 8 | gggg | 2 | 4444 | 444 | 777 | [4]
| 9 | hhhh | 2 | 5555 | 555 | 888 |
| 10 | iiii | 2 | 6666 | 666 | 999 |
| 11 | jjjj | 2 | 7777 | 777 | 000 |
| 12 | kkkk | 2 | 8888 | 888 | 001 |
| 13 | llll | 2 | 9999 | 999 | 002 |
| 14 | mmmm | 2 | 0000 | 000 | 003 |
------------------------------------------------
Я пытаюсь найти количество повторяющихся строк, которые соответствуют одному из следующих критериев:
- То же
vendor_id
и то же vendor_sku
ИЛИ - То же
vendor_id
и то же name
(без учета регистра) ИЛИ - То же
vendor_id
и то же upc
ИЛИ - То же
vendor_id
и то же ean
(обозначение [n]
рядом с каждымстрока будет соответствовать условию, в котором эти строки являются дубликатами)
Я уже собрал этот запрос, но он будет соответствовать только условию # 1:
SELECT
count(*)
FROM
my_table
GROUP BY
vendor_id, vendor_sku
HAVING
COUNT(*) > 1
И мой ожидаемый результат будетбыть 8 на основе этого примера