问条查询组合的SQL语句,该如何处理
问条查询组合的SQL语句
现在有张树形表里面有两个字段myID,parentID,现在我新增了一个字段codeID
现在需要写SQL语句根据myID,parentID生成codeID
codeID=myID+parentID+(myID.parentID.parentID)+.......
也就是说,A记录的parentID的记录可能有parentID,一直要到parentID为null才能结束
------解决方案--------------------
------解决方案--------------------
转成 int
现在有张树形表里面有两个字段myID,parentID,现在我新增了一个字段codeID
现在需要写SQL语句根据myID,parentID生成codeID
codeID=myID+parentID+(myID.parentID.parentID)+.......
也就是说,A记录的parentID的记录可能有parentID,一直要到parentID为null才能结束
------解决方案--------------------
CREATE TABLE 树形表(myID int, parentID int, codeID int)
GO
INSERT INTO 树形表(myID,parentID)
SELECT 1,NULL UNION ALL
SELECT 2,1 UNION ALL
SELECT 3,1 UNION ALL
SELECT 4,2 UNION ALL
SELECT 5,4 UNION ALL
SELECT 6,3
WITH cte (myID,parentID,codeID) AS (
SELECT myID,
parentID,
myID
FROM 树形表
WHERE parentID IS NULL
UNION ALL
SELECT t.myID,
t.parentID,
t.myID + p.codeID
FROM 树形表 t
JOIN cte p
ON t.parentID = p.myID
)
UPDATE 树形表
SET codeID = cte.codeID
FROM 树形表, cte
WHERE 树形表.myID = cte.myID
SELECT * FROM 树形表
myID parentID codeID
----------- ----------- -----------
1 NULL 1
2 1 3
3 1 4
4 2 7
5 4 12
6 3 10
------解决方案--------------------
转成 int
CREATE TABLE #树形表
(myID nvarchar(255),
parentID nvarchar(255),
codeID nvarchar(500))
GO
INSERT INTO #树形表(myID,parentID)
SELECT 1,NULL UNION ALL
SELECT 2,1 UNION ALL
SELECT 3,1 UNION ALL
SELECT 4,2 UNION ALL
SELECT 5,4 UNION ALL
SELECT 6,3
go
WITH cte (myID,parentID,codeID) AS (
SELECT CONVERT (int,myID)myID,
CONVERT(int, parentID)parentID,
CONVERT(int ,myID)myID
FROM #树形表
WHERE parentID IS NULL
UNION ALL
SELECT CONVERT (int,t.myID)myID,
CONVERT(int, t.parentID)parentID,
t.myID + p.codeID
FROM #树形表 t
JOIN cte p
ON t.parentID = p.myID
)
UPDATE #树形表
SET codeID = cte.codeID
FROM #树形表, cte
WHERE #树形表.myID = cte.myID
SELECT * FROM #树形表