0

我想要insert from Table1 the rows are not in Table2.

parentId = 0将节点放在 Table2 上是一个错误。

因此,我需要让所有父母的所有儿子都在 Table2 中,insert如果他们不在 Table2 上,那么他们的 Key 是父母曾经在 Table2 上拥有的。

我为每张桌子准备了两个键,而不仅仅是一个。有我的问题。

请如果有人可以帮我。我可以使用cursors.

Table1
IDNode, IDParent
1       0
2       1
3       1
4       1
5       0
6       5


Table2
IDNode, IDKey
1       1
1       7
2       6
4       2
5       3





IdNode  IDparent IDkey
2       1           1
3       1           1
4       1           1
2       1           7
3       1           7
4       1           7
remove the IDNode2 with IDKey6
remove the IDNode4 with IDKey2
6       5           4

父亲的键更重要,如果在我的Table2中我有一个带键的父,我需要在表1中找到儿子,用父亲的键插入它们,如果存在不同键的儿子删除它,毕竟从 table2 中删除父节点

4

2 回答 2

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
于 2013-06-28T10:07:25.907 回答
0

您可以在 SQL Server 2008 中使用 MERGE 查询。您可以在以下链接中找到详细信息:

http://msdn.microsoft.com/en-us/library/bb522522(v=sql.105).aspx

于 2013-06-28T10:55:09.200 回答