如果表 2 中不存在整行,则从表 1 插入表 2 select
insert into table2 select from table1 if the whole row not exists in table2
我的问题是:
我有 2 个 sql 服务器,我正在使用链接服务器从服务器 1 更新服务器 2 上的 table。
我正在使用这个查询:
insert into [server2].[db2].[dbo].[pcodes] (parcode,pname,unit,typ) select parcode,pname,unit,typ from [server1].[db1].[dbo].[pcodes] where not exists (select parcode,pname,unit,typ from [server2].[db2].[dbo].[pcodes])
代码仅在 server2 上的 table 为空时有效,因此当我第一次执行查询时它有效,但之后当我在 server1 上添加新记录并执行查询时,我得到(0 行影响)。有什么建议吗?
我想让您知道,如果服务器 2 中不存在服务器 1 中的新记录或编辑过的记录,我想更新服务器 2 table。
无论如何谢谢大家。
UODATE:
查看上图,当server1的记录为9条记录,而server2的table为空时,查询成功,9条记录全部插入到server2中,之后,我添加了一个新的在 server1 中记录,这是第 10 条记录,我执行了上面的查询,我得到了(0 行影响)。为什么没有插入新记录?
在 not exist 语句中你需要有一个 where 条件,你的查询缺少那个,
INSERT INTO [server2].[db2].[dbo].[pcodes] (parcode,pname,unit,typ)
SELECT parcode,pname,unit,typ
FROM [server1].[db1].[dbo].[pcodes] a
WHERE NOT EXISTS
(SELECT parcode,pname,unit,typ from [server2].[db2].[dbo].[pcodes] b
WHERE a.parcode=b.parcode and a.pname=b.pname and a.unit=b.unit and a.typ=b.typ )
我的问题是:
我有 2 个 sql 服务器,我正在使用链接服务器从服务器 1 更新服务器 2 上的 table。
我正在使用这个查询:
insert into [server2].[db2].[dbo].[pcodes] (parcode,pname,unit,typ) select parcode,pname,unit,typ from [server1].[db1].[dbo].[pcodes] where not exists (select parcode,pname,unit,typ from [server2].[db2].[dbo].[pcodes])
代码仅在 server2 上的 table 为空时有效,因此当我第一次执行查询时它有效,但之后当我在 server1 上添加新记录并执行查询时,我得到(0 行影响)。有什么建议吗?
我想让您知道,如果服务器 2 中不存在服务器 1 中的新记录或编辑过的记录,我想更新服务器 2 table。
无论如何谢谢大家。
UODATE:
查看上图,当server1的记录为9条记录,而server2的table为空时,查询成功,9条记录全部插入到server2中,之后,我添加了一个新的在 server1 中记录,这是第 10 条记录,我执行了上面的查询,我得到了(0 行影响)。为什么没有插入新记录?
在 not exist 语句中你需要有一个 where 条件,你的查询缺少那个,
INSERT INTO [server2].[db2].[dbo].[pcodes] (parcode,pname,unit,typ)
SELECT parcode,pname,unit,typ
FROM [server1].[db1].[dbo].[pcodes] a
WHERE NOT EXISTS
(SELECT parcode,pname,unit,typ from [server2].[db2].[dbo].[pcodes] b
WHERE a.parcode=b.parcode and a.pname=b.pname and a.unit=b.unit and a.typ=b.typ )