|
|
|
|
Есть две
одинаковые таблицы по ~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
|
|