如何在SQL Server中插入填充有父代码的表
我有很多代码,这个代码在另一个表中有很多子项如何在SQL Server中插入填充有父代码的表,sql,sql-server,Sql,Sql Server,我有很多代码,这个代码在另一个表中有很多子项 DECLARE @value VARCHAR(150); SET @value = '4105'; SELECT VALUE Parent INTO ##k FROM dbo.Split (',',@value) SELECT DISTINCT lastlevel INTO ##tmp_getAllLastLevel FROM [DWH-INF].[center].[dbo].[IFIRView_NeginTitleTotal]
DECLARE @value VARCHAR(150);
SET @value = '4105';
SELECT VALUE Parent
INTO ##k
FROM dbo.Split (',',@value)
SELECT DISTINCT lastlevel
INTO ##tmp_getAllLastLevel
FROM [DWH-INF].[center].[dbo].[IFIRView_NeginTitleTotal]
WHERE lastlevel IN (SELECT parent FROM ##k)
OR level1 IN (SELECT parent FROM ##k)
OR level2 IN (SELECT parent FROM ##k)
OR level3 IN (SELECT parent FROM ##k)
OR level4 IN (SELECT parent FROM ##k)
OR level5 IN (SELECT parent FROM ##k)
OR level6 IN (SELECT parent FROM ##k)
OR level7 IN (SELECT parent FROM ##k)
OR level8 IN (SELECT parent FROM ##k)
此代码正常,并获取父id=4105的所有子项
但是我有很多父母喜欢我
SET @value = '4105,4106,2034,2055';
如何将所有lastlevel和父级插入到类似此表的一个表中
parent lastlevel
------------------------------
4105 1273
4105 1275
4105 1279
4106 1288
4106 1292
2055 1073
感谢您阅读我的问题您可以像下面这样使用内部连接代码
select tb1.Parent,tb2.lastlevel into ##tmp_getAllLastLevel from ##k
tb1 inner join [DWH-INF].[center].[dbo].[IFIRView_NeginTitleTotal] tb2 on
tb1.Parent=tb2.lastlevel or tb1.Parent=tb2.level1 or
tb1.Parent=tb2.level2 or tb1.Parent=tb2.level3 or tb1.Parent=tb2.level4 or
tb1.Parent=tb2.level5 or tb1.Parent=tb2.level6 or tb1.Parent=tb2.level7
or tb1.Parent=tb2.level8
并获取所有父级和lastlevel您不需要临时表来实现此目的:
select s.value as Parent, tb2.lastlevel
into ##tmp_getAllLastLevel
from [DWH-INF].[center].[dbo].[IFIRView_NeginTitleTotal] tb2 join
dbo.Split(',', @value) s
on s.value in (tb2.lastlevel, tb2.level1, tb2.level2, tb2.level3, tb2.level4, tb2.level5, tb2.level6, tb2.level7, tb2.level8);
还要注意的是,像这样跨列存储层次结构可能会使查询变得更加复杂。您正在尝试将值数组存储为单独的列。在SQL中,最好将它们存储在单独的行中