Поиск дублирующихся строк в таблице MySQL

0

У меня есть таблица, в которой я связываю элементы с типами, где каждый тип может иметь несколько категорий. Для каждой комбинации типа и категории нужно связать только один элемент. Однако, через некоторую прошлую мою ошибку, некоторые дубликаты проскользнули. Теперь я пытаюсь написать запрос, который даст мне дубликаты, но я не делаю отличную работу, или я бы не стал публиковать здесь, очевидно.

SELECT
    item_id,
    type_id,
    category
FROM itemTypes
WHERE category = 'cat1'
GROUP BY type_id
HAVING COUNT(*) >= 2;

Это то, что я пробовал. Он работает и дает мне type_ids, которые связаны с разными элементами. Но каждый тип_ид должен быть связан только с одним элементом. Этот список не показывает мне элементы, которые связаны. И это именно то, что я хотел бы знать.

Кто-нибудь может мне помочь?

Обновить

Ниже приведен образец данных. Как вы видите, type_id 5 и 6 связаны несколько раз. В результате я хотел бы получить только эти записи.

| id    | item_id   | type_id   |   cat     |
+-------+-----------+-----------+-----------+
| 1     | 100       | 5         | cat1      |
| 2     | 110       | 5         | cat1      |
| 3     | 115       | 6         | cat1      |
| 4     | 120       | 7         | cat1      |
| 5     | 125       | 5         | cat1      |
| 6     | 130       | 6         | cat1      |
| 7     | 135       | 4         | cat1      |
| 8     | 140       | 8         | cat1      |
  • 0
    обновите свой вопрос и добавьте правильный образец данных
Теги:

1 ответ

2
Лучший ответ

Вам нужно присоединиться к вашей таблице itemTypes к запросу, который у вас есть, перефразировать как подзапрос:

SELECT t1.*
FROM itemTypes t1
INNER JOIN
(
    SELECT item_id
    FROM itemTypes
    WHERE category = 'cat1'
    GROUP BY item_id
    HAVING COUNT(*) > 1
) t2
    ON t1.item_id = t2.item_id;

Логическая проблема с вашим текущим запросом заключается в том, что он может находить item_id значения item_id соответствующие вашим критериям, но не другие значения столбца.

  • 0
    Это именно то, что я искал. Вы спасатель. Благодарю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню