Удаление дубликатов, полученных при объединении таблиц в oracle

#sql #oracle #join #duplicates

#sql #Oracle #Присоединиться #дубликаты

Вопрос:

У меня есть таблица с именем Test1, в которой есть 309 записей и один столбец с именем product_label. Существует другая таблица с именем Test2, в которой содержится более 1000000 записей и есть столбцы product_label,account_number, customer_ref и т.д. Один product_label принадлежит определенной учетной записи, а учетная запись принадлежит конкретному клиенту. Я хочу получить соответствующие account_numbers и customer_ref для product_labels в Test1. Я попробовал внутреннее объединение двух таблиц на основе product_label. Но он выдает более 309 строк. Существует ли какой-либо метод в Oracle для удаления дубликатов, полученных путем объединения таблиц.

Комментарии:

1. Для нас неясно, что содержат таблицы. Является ли Test1 таблицей product label, т. Е. имеется ли в вашей базе данных 309 различных ярлыков продуктов? Если это так, и одна product_label принадлежит определенной учетной записи, почему она находится account_number в таблице Test2 , а не в таблице Test1 ? Такую модель данных следует выбирать, только если вы хотите разрешить несколько учетных записей для каждой этикетки продукта. И в этом случае: если для одного ярлыка продукта в Test2 существуют разные учетные записи, которые вы хотите показать?

2. Чаще всего необходимость в DISTINCT в соединении проистекает из того факта, что соединение на самом деле не требуется и должно быть заменено EXISTS предложением. Но без более подробной информации / примеров данных на это действительно сложно ответить

Ответ №1:

Без каких-либо образцов данных или запроса (которые трудно отлаживать, если вы их не видите), наиболее очевидным «решением» является

 select DISTINCT
  

Другая возможность заключается в том, что использованное вами предложение JOIN and / or WHERE недостаточно ограничивает количество строк, поэтому вам придется посмотреть, можно ли что-то с этим сделать.