2013-01-11 48 views
6

Có thể kiểm tra hai điều kiện EXISTS trong một câu lệnh SQL IF duy nhất không? Tôi đã thử những điều sau đây.Nếu tồn tại hoặc tồn tại?

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

Tôi đã thử chơi với thêm bổ sung IF và dấu ngoặc đơn trong đó, nhưng vô ích.

Bạn có thể giúp tôi bằng cú pháp thích hợp không?

+0

@ user1142433 - bạn có thể gửi truy vấn đầy đủ của bạn ? –

Trả lời

13

Nếu 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' 

là tốt, lưu ý điều duy nhất thay đổi là EXISTS không EXIST. Kế hoạch cho điều này có thể sẽ là UNION ALL mà các mạch ngắn nếu thử nghiệm đầu tiên là đúng.

+0

Tôi nhận được "Biểu thức của loại không logic được chỉ định trong ngữ cảnh có điều kiện được mong đợi, gần 'NẾU'." với mã đó. – user1142433

+0

@ user1142433 - Vui lòng đăng mã chính xác bạn đang sử dụng. Mã trong câu trả lời này không đưa ra lỗi đó. [SQL Fiddle] (http://www.sqlfiddle.com/#!6/28328f/3) –

+0

Xin lỗi. Giải pháp của bạn hoạt động hoàn hảo. Tôi đã có một lỗi bổ sung trong sproc của tôi. – user1142433

5

Bạn bỏ lỡ một S vào cuối TỒN TẠI

EXIST S, không tồn tại

+0

Cảm ơn bạn. Đôi khi đó là những điều đơn giản ... – user1142433

-1

Bạn cũng có thể viết một tuyên bố TRÊN

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

Điều này không hữu ích cho câu hỏi này vì câu hỏi giải quyết một câu lệnh IF EXISTS giữa hai bảng khác nhau (lưu ý tblOne và tblTwo trong đoạn mã được cung cấp). –

Các vấn đề liên quan