Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подскажите, как лучше определить дубли при добавлении/обновлении данных? / 2 сообщений из 2, страница 1 из 1
04.10.2016, 11:47
    #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
04.10.2016, 12:42
    #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
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подскажите, как лучше определить дубли при добавлении/обновлении данных? / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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