【问题标题】:Conditional IF Exists Insert条件 IF 存在插入
【发布时间】:2019-01-31 01:30:21
【问题描述】:

我有一个查询要首先检查是否存在某些东西。如果是,请在表变量中插入一些内容。否则,在同一个表变量中插入其他内容。

IF NOT EXISTS (SELECT 1 FROM @Main WHERE CustomerId = @CustomerId)
(   
    BEGIN  
        INSERT INTO @Result 
            SELECT .... 
            FROM ... 
            WHERE...
   END
)
ELSE
   INSERT INTO @Result  
       SELECT .... 
       FROM ...  
       WHERE...

由于某种原因,我不断收到以下错误,在NOT EXISTS 条件下抱怨... ELSE 部分完全没问题。

关键字“BEGIN”附近的语法不正确
')' 附近的语法不正确
'@Result' 附近的语法不正确

我哪里做错了?

【问题讨论】:

  • 你用的是什么数据库?
  • SQL 2016.. 需要更多字符

标签: sql sql-server sql-server-2016 table-variable


【解决方案1】:

括号不属于BEGIN/END:

IF NOT EXISTS (SELECT 1 FROM @Main WHERE CustomerId = @CustomerId)   
BEGIN  
    INSERT INTO @Result 
        SELECT .... FROM ... WHERE...
END
ELSE . . .

我还建议您列出@Result 的列INSERT。这可以防止将来出现问题。

【讨论】:

    【解决方案2】:

    试试这个

    IF NOT EXISTS (SELECT 1 FROM @Main WHERE CustomerId = @CustomerId)
    
         BEGIN  
              INSERT INTO @Result 
              SELECT .... FROM ... WHERE...
         END
    
    ELSE
    
         BEGIN
              INSERT INTO @Result 
              SELECT .... FROM ... WHERE...
         END
    

    【讨论】:

    • 是的,删除括号有帮助!
    猜你喜欢
    • 2016-04-14
    • 2015-01-26
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 2011-01-14
    • 2012-08-29
    • 1970-01-01
    相关资源
    最近更新 更多