Найти непревзойденные записи из столбцов (Союз) Sql - PullRequest
0 голосов
/ 04 мая 2018

Мне нужно найти записи, которые не совпадают между двумя столбцами.

У меня есть этот запрос:

select iNum 
from doc_file_fs 
where iNum not in 
(select iFile from doc_client_fs)
union (select iFile from doc_employee_fs)
union (select iFile from doc_prov_fs)
UNION (select  iFile from doc_soc_fs)
UNION (select  iFile from doc_cor_fs)

но найдите только одного из первых избранных, а не других союзов ...

Пожалуйста, мне нужна помощь, и я новичок здесь, будьте терпеливы, если вопрос не правильно сформирован: C

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Я настоятельно рекомендую вам написать запрос так:

select iNum 
from doc_file_fs  df
where not exists (select 1 from doc_client_fs dc where df.iNum = dc.iFile) and 
      not exists (select 1 from doc_employee_fs de where df.iNum = de.iFile) and 
      not exists (select 1 from doc_prov_fs dp where df.iNum = dp.iFile) and 
      not exists (select 1 from doc_cor_fs ds where df.iNum = ds.iFile) and 
      not exists (select 1 from doc_employee_fs de where df.iNum = de.iFile) and 
      not exists (select 1 from doc_cor_fs dc where df.iNum = dc.iFile) ;

Это может использовать преимущества индексов ifile для каждой из других таблиц. Это должно быть намного, намного быстрее, чем версия, использующая union и not in.

0 голосов
/ 04 мая 2018

Это сработает?

SELECT iNum 
FROM doc_file_fs 
WHERE iNum NOT IN 
(SELECT iFile FROM doc_client_fs
UNION
SELECT iFile FROM doc_employee_fs
UNION
SELECT iFile FROM doc_prov_fs
UNION
SELECT iFile FROM doc_soc_fs
UNION
SELECT iFile FROM doc_cor_fs)

Полагаю, ваша проблема заключается в размещении UNION в скобках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...