запрос , который фильтрует чтобы не было soc_id в 2 таблицах. Моя задача сделать так чтобы айдишника не было в 3 таблицах. Правильно ли будет так написать "AND SOC_ID NOT IN (SELECT CPN_SOC_ID FROM COMPANY UNION SELECT CAB_SOC_ID FROM CABINET UNION SELECT AGT_SOC_ID FROM AGENT) " или лучше добавить еще один AND ? Спасибо
Правильно, запрос выполнится так, как и требует задача. Но будет ли лучше? Зависит от плана запроса, наверное. От индексов, от количества данных в таблицах, и т.п. Попробуйте, сравните результаты. Успеха!
Лучше убрать это всё и заменить на NOT EXISTS (SELECT 1 FROM COMPANY WHERE COMPANY.CPN_SOC_ID = SOC_DELETED.SOC_ID) AND NOT EXISTS (SELECT 1 FROM CABINET...) AND NOT EXISTS (SELECT 1 FROM AGENT ...), мне кажется.
(select top 1 ..) -)
Насколько я помню, среди распространённых СУБД уже нет ни одной настолько тупой, где подобное (по крайней мере) не бесполезно. ;)
Лучше 3 NOT EXISTS ( ... ) в WHERE
Обсуждают сегодня