SQL выбирает строки, которые имеют (частично) дублированные данные - PullRequest
0 голосов
/ 08 декабря 2010

У меня есть следующая схема базы данных:

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     |

Ответы [ 3 ]

2 голосов
/ 08 декабря 2010
SELECT
  ProductId,
  Component
FROM
  Table
GROUP BY
  ProductId,
  Component
HAVING
  COUNT(*) > 1
2 голосов
/ 08 декабря 2010
SELECT ProductId, Component, count(*) Duplicates
 from MyTable  --  or whatever
 group by ProductId, Component
 having count(*) > 1

Это также покажет вам, сколько есть повторяющихся записей.

1 голос
/ 08 декабря 2010
select "Product ID", Component
from table
group by "Product ID", Component
having count(*) > 1
...