我有一个父子层次组成的100k记录。 这是一个很小的子集。
儿童 | 父 |
---|---|
1 | 2 |
1 | 3 |
2 | 3 |
我需要经过每个的价值从柱父母和检查,如果相同的价值也存在柱子。 如果没有,那么创建一个行(价值,NULL)。 在这个例子值3中不存在儿童柱,所以我需要它来创建一个新的行与价值(3,NULL)。
儿童 | 父 |
---|---|
3 | 空 |
1 | 2 |
1 | 3 |
2 | 3 |
我的代码不会返回一个错误,但它不会做什么我想要它做的。
INSERT IGNORE INTO #table (child, parent)
SELECT (CASE WHEN parent not in (Select child from #table) THEN parent END) as child, Null
FROM #table
我得到很多新行(NULL,NULL),但0行(价值,NULL)。 它必须以某种方式总是跳过前面的其他条款时有这么多的新行(NULL,NULL),但不知道为什么。
使用SQL服务器的管理工作室17. 任何帮助是极大的赞赏。