Sql-сервер жалуется на это заявление, если не существует - PullRequest
2 голосов
/ 14 ноября 2008

Sql-сервер жалуется на это утверждение «ЕСЛИ НЕ СУЩЕСТВУЕТ», говоря, что рядом с ключевым словом «ИЛИ» указан «неправильный синтаксис».

Мой запрос:

IF NOT EXISTS ( 
                (SELECT * FROM Users where userID = 1)
                OR
                (SELECT * FROM sales WHERE saleID = 1)
              )
BEGIN
            // blah blah blah

END

Ответы [ 4 ]

8 голосов
/ 14 ноября 2008

попробуйте вместо этого

IF 
    NOT EXISTS (SELECT 1 FROM Users where userID = 1)  
AND 
    NOT EXISTS (SELECT 1 FROM sales WHERE saleID = 1)
BEGIN 
       -- blah blah blah
END

или, если вы настаиваете на дизъюнкции:

IF NOT (
    EXISTS (SELECT 1 FROM Users where userID = 1)  
    OR 
    EXISTS (SELECT 1 FROM sales WHERE saleID = 1)
)
BEGIN 
    -- blah blah blah
END

оператор EXISTS принимает один оператор выбора и проверяет любые результаты (поэтому вы можете использовать константу 1 вместо * или имя столбца, это более эффективно)

3 голосов
/ 14 ноября 2008

вы хотите, ЕСЛИ НЕ СУЩЕСТВУЕТ (ВЫБРАТЬ ...) И НЕ СУЩЕСТВУЕТ (ВЫБРАТЬ ....)

1 голос
/ 14 ноября 2008

изменить "или" на "союз"

0 голосов
/ 14 ноября 2008

Может быть, это то, что вы пытаетесь сделать:

IF NOT EXISTS(SELECT * FROM Users WHERE userID = 1) OR (AND) NOT EXISTS(SELECT * FROM sales WHERE saleID = 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...