我想要insert from Table1 the rows are not in Table2.
在Table2上使用parentId = 0
节点是错误的。
所以我需要让所有父母的所有儿子都在Table2中,如果他们不在Table2上,那么父母曾经在Table2上拥有Key。
我为每张桌子准备了两把钥匙,而不仅仅是一把钥匙。有我的问题。
如果有人可以帮助我,请告诉我。我可以使用insert
。
cursors
父亲的关键更重要,如果在我的Table2中我有一个带有密钥的父,我需要找到表格table1的儿子,用父亲的密钥插入它们,如果存在儿子用不同的密钥删除它毕竟从table2中删除了父节点
答案 0 :(得分:1)
注意:此答案假设您正在使用的SQL提供程序/版本。
DECLARE @temp table (idnode, idkey)
INSERT INTO @temp
SELECT
item.idnode, table2.idkey
FROM
Table1 item
inner join Table1 parent on item.idparent = parent.idnode
inner join Table2 on table2.idnode = parent.idnode;
SELECT * from @temp;
一旦您检查到它是正确的,这应该返回所需的结果:
下一部分假定您要删除现有的不匹配条目...
DELETE from table2;
insert into table2
select * from @temp;
保留现有值:
insert into table2
select t.* from @temp t
left outer join table2 on table2.idnode = t.idnode
where table2.idnode is null
答案 1 :(得分:0)
您可以在SQL Server 2008中使用MERGE查询。您可以在以下链接中找到详细信息:
http://msdn.microsoft.com/en-us/library/bb522522(v=sql.105).aspx