【问题标题】:If Exist or Exists?如果存在还是存在?
【发布时间】:2012-12-26 12:16:21
【问题描述】:

是否可以在单个IF SQL 语句中测试两个EXISTS 条件?我尝试了以下方法。

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

我尝试在其中添加额外的IF 和括号,但无济于事。

你能帮我找出正确的语法吗?

【问题讨论】:

  • @user1142433 - 你能发布完整的查询吗?

标签: sql sql-server conditional exists


【解决方案1】:

如果是 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' 

没关系,注意唯一改变的是EXISTS而不是EXIST。如果第一个测试为真,则此计划可能是 UNION ALL 短路。

【讨论】:

  • 我收到“在预期条件的上下文中指定的非布尔类型的表达式,靠近 'IF'。”使用该代码。
  • @user1142433 - 请发布您正在使用的确切代码。此答案中的代码没有给出该错误。 SQL Fiddle
  • 道歉。您的解决方案完美运行。我的存储过程中还有一个错误。
【解决方案2】:

你错过了 EXIST 结尾的一个 S

存在S,不存在

【讨论】:

    【解决方案3】:

    你也可以写一个 IN 语句

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

    【讨论】:

    • 这对这个问题没有用,因为该问题解决了两个不同表之间的 IF EXISTS 语句(请注意提供的代码 sn-p 中的 tblOne 和 tblTwo)。
    猜你喜欢
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多