有条件IF存在插入

时间:2019-01-31 01:30:22

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

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

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'附近的语法不正确

我在哪里做错了?

2 个答案:

答案 0 :(得分:4)

括号不属于BEGIN / END

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

我还建议您为@Result列出INSERT的列。这样可以避免将来出现问题。

答案 1 :(得分: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