SQL выберите строки, которые имеют (частично) дублированные данные
-
10-10-2019 - |
Вопрос
У меня есть следующая схема базы данных:
Product ID | Component | ...
Идентификатор продукта - иностранный ключ
Компонент - части продукта
По какой -то загадочной причине ряд записей имеет тот же идентификатор продукта и компонент. Есть ли запрос SQL, который бы возвращает все идентификаторы продукта и компоненты, которые имеют несколько идентичных компонентов?
Например, приведя следующую таблицу
| Product ID | Component |
--------------------------
| 1 | c1000 |
| 1 | c1100 |
| 2 | c2000 |
| 2 | c2000 |
| 2 | c2200 |
| 3 | c3000 |
Запрос SQL должен вернуться:
| Product ID | Component |
--------------------------
| 2 | c2000 |
Решение
SELECT
ProductId,
Component
FROM
Table
GROUP BY
ProductId,
Component
HAVING
COUNT(*) > 1
Другие советы
SELECT ProductId, Component, count(*) Duplicates
from MyTable -- or whatever
group by ProductId, Component
having count(*) > 1
Это также покажет вам, сколько дублирующих записей есть.
select "Product ID", Component
from table
group by "Product ID", Component
having count(*) > 1
Не связан с StackOverflow