2013-01-11 9 views
6

Czy możliwe jest przetestowanie dwóch warunków EXISTS w pojedynczej instrukcji SQL IF? Próbowałem następujące.Jeśli istnieje lub istnieje?

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

Próbowałem grać z dodaniem dodatkowej IF nawias i tam, ale bezskutecznie.

Czy możesz mi pomóc z właściwą składnią?

+0

@ user1142433 - Możesz opublikować pełnej kwerendy ? –

Odpowiedz

13

Jeśli 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' 

jest w porządku, trzeba pamiętać, jedyne co zmieniło się EXISTS nie EXIST. Planu tego prawdopodobnie będzie UNION ALL, że zwarcia, jeśli pierwszy testowany jest prawdziwy.

+0

Otrzymuję "Wyrażenie typu nie-boolowskiego określone w kontekście, w którym oczekiwany jest warunek, w pobliżu" JEŻELI "." z tym kodem. – user1142433

+0

@ user1142433 - Proszę podać dokładny kod, którego używasz. Kod w tej odpowiedzi nie daje tego błędu. [SQL Fiddle] (http://www.sqlfiddle.com/#!6/28328f/3) –

+0

Przeprosiny. Twoje rozwiązanie działa idealnie. Miałem dodatkowy błąd w moim sproc. – user1142433

5

Przegapiłeś kabla S na końcu istnieć

ISTNIEJE S, nie istnieje

+0

Dziękuję. Czasami jest to proste ... – user1142433

-1

Można również napisać oświadczenie, w

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

Nie jest to użyteczne w przypadku tego pytania, ponieważ pytanie dotyczy instrukcji IF EXISTS między dwiema różnymi tabelami (uwaga tblOne i tblTwo w podanym fragmencie kodu). –

Powiązane problemy