如何将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'.

我该如何解决这个问题?谢谢。

+0

我认为,这是[MERGE](https://docs.microsoft.com/en-us/sql/t-sql/statements/merge-transact-sql)你想重新什么发明... – Shnugo

+0

@Shnugo感谢我的朋友注意我的问题,我想告诉用户什么区别来源和目的地表或更exmplain哪些记录到CRM表中,而不是在结算表 –

+0

您可以使用'OUTPUT'语句来获得持续的更改列表......或者您可以使用“@@ ROWCOUNT”获取最后一个操作的受影响行数。 – Shnugo

你想要@@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分钟后接受你的答案 –