Я пытаюсь включить новую таблицу со значениями, которые необходимо проверить и включить в хранимую процедуру.Оператор 1 - это существующая таблица, с которой необходимо проверить, а оператор 2 - это новая таблица, с которой нужно проверить.
В настоящее время у меня есть 2 EXISTS
условия, которые работают независимо и дают ожидаемые результаты.Под этим я подразумеваю, если я закомментирую Утверждение 1, утверждение 2 работает и наоборот.Когда я собираю их вместе, запрос не завершается, ошибки нет, но время ожидания неожиданно, потому что каждое утверждение занимает всего несколько секунд.
Я понимаю, что, вероятно, есть лучший способ сделать это, нопрежде чем я сделаю это, я хотел бы знать, почему я не могу сделать несколько заявлений о существовании, как это?Разве в предложении WHERE
не должно быть несколько EXISTS
условий?
SELECT *
FROM table1 S
WHERE
--Statement 1
EXISTS
(
SELECT 1
FROM table2 P WITH (NOLOCK)
INNER JOIN table3 SA ON SA.ID = P.ID
WHERE P.DATE = @Date AND P.OTHER_ID = S.ID
AND
(
SA.FILTER = ''
OR
(
SA.FILTER = 'bar'
AND
LOWER(S.OTHER) = 'foo'
)
)
)
OR
(
--Statement 2
EXISTS
(
SELECT 1
FROM table4 P WITH (NOLOCK)
INNER JOIN table5 SA ON SA.ID = P.ID
WHERE P.DATE = @Date
AND P.OTHER_ID = S.ID
AND LOWER(S.OTHER) = 'foo'
)
)
РЕДАКТИРОВАТЬ: Я включил детали запроса.В таблице 1-5 представлены разные таблицы, повторных таблиц нет.