如何将sql server除结果保存到表中?
问题描述:
我在sql server
是新和尝试,除了导致到表为目的插入写这样的代码:
如何将sql server除结果保存到表中?
insert into [tablediff].[dbo].[TempTable]
select [Phone] from [dbo].[CRMSubscriber]
except
select [Phone] from [dbo].[BillingSubscriber]
代码工作很好,但是当我尝试运行此代码:
use [tablediff]
if (not exists(
insert into [tablediff].[dbo].[TempTable]
select [Phone] from [dbo].[CRMSubscriber]
except
select [Phone] from [dbo].[BillingSubscriber]
))
begin
print 'no record'
end
else
begin
print 'has record'
end
得到这个错误:
Msg 156, Level 15, State 1, Line 3 Incorrect syntax near the keyword 'insert'.
Msg 102, Level 15, State 1, Line 7 Incorrect syntax near ')'.
Msg 156, Level 15, State 1, Line 11 Incorrect syntax near the keyword 'else'.
我该如何解决这个问题?谢谢。
答
你想要@@rowcount
变量。这会告诉您在上次操作中有多少行受到影响(插入,更新或删除)。
use [tablediff]
insert into [tablediff].[dbo].[TempTable]
select [Phone] from [dbo].[CRMSubscriber]
except
select [Phone] from [dbo].[BillingSubscriber]
if @@ROWCOUNT = 0
begin
print 'no record'
end
else
begin
print 'has record'
end
+0
非常好,谢谢 –
+0
5分钟后接受你的答案 –
我认为,这是[MERGE](https://docs.microsoft.com/en-us/sql/t-sql/statements/merge-transact-sql)你想重新什么发明... – Shnugo
@Shnugo感谢我的朋友注意我的问题,我想告诉用户什么区别来源和目的地表或更exmplain哪些记录到CRM表中,而不是在结算表 –
您可以使用'OUTPUT'语句来获得持续的更改列表......或者您可以使用“@@ ROWCOUNT”获取最后一个操作的受影响行数。 – Shnugo