SQL Server:IF EXISTS语句

时间:2018-03-20 21:58:01

标签: sql sql-server

我正在研究SQL Server中的 If Exists Then Update,Else Insert 语句,并且有2个问题。

首先,我希望能够通过有效地执行两个步骤来调试我的陈述:

If Exists (select.....)
Print 'Record already exists'
UPDATE Tab set Col....

哪个失败了。有没有办法让两个语句都能执行,或者当If Exists返回TRUE时,我只能得到一个结果吗?我在 PRINT 命令后尝试了一个逗号,但没有区别。

其次,我的If Exists查询返回一条记录(暂时)。但是,在没有WHERE子句的情况下运行我的UPDATE会导致表中的每条记录都被更改。我认为UPDATE只会对If Exists测试返回的记录进行操作。我是否需要在UPDATE语句中指定WHERE子句,就像我没有If Exists测试一样?

1 个答案:

答案 0 :(得分:0)

你需要的sintax应该是下一个:

if exists (select ... _your_condition_)
begin
  Print 'Record already exists'
  UPDATE Tab set Col....
end
else
begin
  Print 'New record'
  INSERT into Tab ....
end

注意没有开始/结束块,if仅适用于紧接的下一句,因此更新将始终在您的示例中完成。 这只是你问题的一部分的一个答案,这是非常误导的。如果您的WHERE过滤器与您在“if exist”语句中执行的检查有某种关系,我们应该确切地知道它是否有更好的方法来解析您的查询。