SQL выберите строки, которые имеют (частично) дублированные данные

StackOverflow https://stackoverflow.com/questions/4388635

  •  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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top