powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подскажите, как лучше определить дубли при добавлении/обновлении данных?
2 сообщений из 2, страница 1 из 1
Подскажите, как лучше определить дубли при добавлении/обновлении данных?
    #39320181
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно выполнить сложный SQL-запрос и его результаты поместить во вспомогательную таблицу.
Во вспомогательной таблице записи должны быть уникальными, но в результатах исходного SQL-запроса возможно удвоение некоторых строк (в удвоенных строках те значения, которые помещаются во вспомогательную таблицу, полностью совпадают).
Дублирование строк это не исключительная ситуация, она теоретически возможна, но обычно указывает на некоторые некорректности в исходных данных. Поэтому эту ситуацию я хотел бы иметь возможность обнаружить.
Для этого я добавил во вспомогательную таблицу числовое необязательное поле CNT и провожу обновление данных так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
merge into TMP_TABLE D
using (
...
  ) S on (S.ACCIDENT_ID = D.ACCIDENT_ID and S.CUSTOMER_ID = D.CUSTOMER_ID)
  when not matched then
    insert (D.ACCIDENT_ID, D.CUSTOMER_ID, D.GROUP_ID, D.INFO_ADDRESS, D.INFO_ACCESS, D.INFO_CLIENT)
    values (S.ACCIDENT_ID, S.CUSTOMER_ID, S.GROUP_ID, S.INFO_ADDRESS, S.INFO_ACCESS, S.INFO_CLIENT)
  when matched then update set D.CNT = nvl(D.CNT,1) + 1


То есть количество дублей (если они будут) я увижу в поле CNT.
Это будет работать? Или подсчет дублей нужно делать отдельным запросом, перед merge?

________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
...
Рейтинг: 0 / 0
Подскажите, как лучше определить дубли при добавлении/обновлении данных?
    #39320222
д0k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alibek B.Нужно выполнить сложный SQL-запрос и его результаты поместить во вспомогательную таблицу.
Во вспомогательной таблице записи должны быть уникальными, но в результатах исходного SQL-запроса возможно удвоение некоторых строк (в удвоенных строках те значения, которые помещаются во вспомогательную таблицу, полностью совпадают).
Дублирование строк это не исключительная ситуация, она теоретически возможна, но обычно указывает на некоторые некорректности в исходных данных. Поэтому эту ситуацию я хотел бы иметь возможность обнаружить.
Для этого я добавил во вспомогательную таблицу числовое необязательное поле CNT и провожу обновление данных так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
merge into TMP_TABLE D
using (
...
  ) S on (S.ACCIDENT_ID = D.ACCIDENT_ID and S.CUSTOMER_ID = D.CUSTOMER_ID)
  when not matched then
    insert (D.ACCIDENT_ID, D.CUSTOMER_ID, D.GROUP_ID, D.INFO_ADDRESS, D.INFO_ACCESS, D.INFO_CLIENT)
    values (S.ACCIDENT_ID, S.CUSTOMER_ID, S.GROUP_ID, S.INFO_ADDRESS, S.INFO_ACCESS, S.INFO_CLIENT)
  when matched then update set D.CNT = nvl(D.CNT,1) + 1


То есть количество дублей (если они будут) я увижу в поле CNT.
Это будет работать? Или подсчет дублей нужно делать отдельным запросом, перед merge?



RTFM


Alibek B.________________________
Мы смотрим с оптимизмом...
...в оптический прицел.

собощил модератору о ксенофобии...
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подскажите, как лучше определить дубли при добавлении/обновлении данных?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]