2013-01-11 16 views
6

È possibile testare due condizioni EXISTS in una singola istruzione SQL IF? Ho provato il seguente.Se esiste o esiste?

IF EXIST (SELECT * FROM tblOne WHERE field1 = @parm1 AND field2 = @parm2) 
    OR 
    EXIST (SELECT * FROM tblTwo WHERE field1 = @parm5 AND field2 = @parm3) 

Ho provato a giocare con l'aggiunta di ulteriore IF e la parentesi in là, ma senza alcun risultato.

Puoi aiutarmi con la sintassi corretta?

+0

@ user1142433 - puoi pubblicare il tuo query full ? –

risposta

13

Se SQL Server

IF EXISTS (SELECT * 
      FROM tblOne 
      WHERE field1 = @parm1 
        AND field2 = @parm2) 
    OR EXISTS (SELECT * 
       FROM tblTwo 
       WHERE field1 = @parm5 
         AND field2 = @parm3) 
    PRINT 'YES' 

va bene, si noti l'unica cosa cambiata è non EXISTSEXIST. Il piano per questo sarà probabilmente un UNION ALL che cortocircuiti se il primo testato è vero.

+0

Ricevo "Un'espressione di tipo non booleano specificata in un contesto in cui è prevista una condizione, vicino a" IF "." con quel codice. – user1142433

+0

@ user1142433 - Si prega di inviare il codice esatto che si sta utilizzando. Il codice in questa risposta non dà quell'errore. [SQL Fiddle] (http://www.sqlfiddle.com/#!6/28328f/3) –

+0

Scuse. La tua soluzione funziona perfettamente. Ho avuto un errore aggiuntivo nel mio sproc. – user1142433

5

vi siete persi una S alla fine di esistere

ESISTONO S, non esiste

+0

Grazie. A volte sono le cose semplici ... – user1142433

-1

si potrebbe anche scrivere un comunicato IN

IF EXISTS (SELECT * FROM tblOne WHERE field1 = @parm1 AND field2 IN (@parm2,@parm3) 
+0

Questo non è utile per questa domanda poiché la domanda affronta un'istruzione IF EXISTS tra due tabelle diverse (nota tblOne e tblTwo nello snippet di codice fornito). –