#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
недостаточно ограничивает количество строк, поэтому вам придется посмотреть, можно ли что-то с этим сделать.