На главную
Подписка
Новости


Рейтинг@Mail.ru











Главная / DELPHI / Часто задаваемые вопросы и ответы на них / Разработка баз данных / Есть две одинаковые таблицы по ~10000 записей.   Вопрос: Как написать SQL-команду, чтобы выбрать записи из таблицы_1, которых нет в таблице_2 (уникальное поле - ID)? Сделать домашней страницей Добавить в избранное Написать писмо

Есть две одинаковые таблицы по ~10000 записей.   Вопрос: Как написать SQL-команду, чтобы выбрать записи из таблицы_1, которых нет в таблице_2 (уникальное поле - ID)?


SELECT * FROM Table1 WHERE ID NOT IN (SELECT ID FROM Table2)
Или
select Table1.*  from Table1 left join Table2 on
Table1.ind=Table2.ind where isnull(Table2.ind);
Спасибо Ксении (xen@etc-france.spb.ru) за информацию.

Коментарий от Вадима (rozovve@sn.nornik.ru)
Если запрос делается часто и не лень возиться, можно сделать так:
1) Таблицу_1 дополнить полем, в которое записывать 1, если запись есть в таблице_2 (0 - если нет);
2) Создать индекс по этому полю;
3) Написать триггер для поддержания актуальности указанного столбца.

Комментарий от Владимира Шаламберидзе (vladimir_shalamberidze@yahoo.com)
В большинстве баз для решения указанной задачи рекомендуют использовать:

select ID
 from table1  
 where not exists
   (select ID
      from table2
      where table1.ID=table2.ID)

так как в данный вариант будет в большинстве случаев работать быстрее варианта с NOT IN.
А в оракле все еще проще

 select ID from table1
 minus
 select ID from table2

Copyright ©   "Мастера DELPHI"   E-mail:   delphi@mastak.com  http://www.delphimaster.ru
Источник получения информации: http://www.delphimaster.ru
Hosted by uCoz