2 Stimmen

Sql-Server beschwert sich über diese IF NOT EXISTS-Anweisung

Sql-Server beschwert sich über diese IF NOT EXISTS-Anweisung und gibt an, dass die Syntax in der Nähe des Schlüsselworts "OR" nicht korrekt ist.

Meine Frage:

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

END

8voto

Steven A. Lowe Punkte 59247

Versuchen Sie es stattdessen auf diese Weise

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

oder, wenn Sie auf einer Disjunktion bestehen:

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

der EXISTS-Operator nimmt eine einzelne Select-Anweisung und prüft, ob es Ergebnisse gibt (Sie können also eine Konstante 1 anstelle von * oder einen Spaltennamen verwenden, das ist effizienter)

3voto

Andy Lester Punkte 86147

Sie wollen IF NOT EXISTS ( SELECT... ) AND NOT EXISTS ( SELECT .... )

1voto

"oder" in "Vereinigung" ändern

0voto

dragonjujo Punkte 348

Vielleicht ist es das, was Sie zu tun versuchen:

IF NOT EXISTS(SELECT * FROM Users WHERE userID = 1) OR (AND) NOT EXISTS(SELECT * FROM sales WHERE saleID = 1)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X