/ / SQL вибирають рядки, які мають (частково) дубльовані дані - sql, дублікати даних, oracle8i

Виділити рядки SQL, які мають (частково) дубльовані дані - sql, duplicate-data, oracle8i

У мене є наступна схема бази даних:

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     |

Відповіді:

2 для відповіді № 1
SELECT
ProductId,
Component
FROM
Table
GROUP BY
ProductId,
Component
HAVING
COUNT(*) > 1

2 для відповіді № 2
SELECT ProductId, Component, count(*) Duplicates
from MyTable  --  or whatever
group by ProductId, Component
having count(*) > 1

Це також покаже вам, скільки дубльованих записів є.


1 для відповіді № 3
select "Product ID", Component
from table
group by "Product ID", Component
having count(*) > 1