你能帮我得到所有类别和所有子类别吗?
数据库创建脚本
CREATE TABLE Category(Id INT NOT NULL, ParentId INT NULL)
GO
INSERT INTO Category (Id, ParentId) VALUES (1, NULL)
INSERT INTO Category (Id, ParentId) VALUES (2, 1)
INSERT INTO Category (Id, ParentId) VALUES (3, 1)
INSERT INTO Category (Id, ParentId) VALUES (4, 2)
INSERT INTO Category (Id, ParentId) VALUES (5, 2)
INSERT INTO Category (Id, ParentId) VALUES (6, 2)
GO
我尝试在 ms-sql 中使用游标技术和连接方法来解决这个问题,但可以获取所有数据。
SELECT parent.Id AS ParentId, parent.ParentId AS ChildId FROM Category parent
JOIN Category child ON parent.Id = child.Id
期待结果
ParentId ChildId
----------- -----------
1 1
1 2
1 3
1 4
1 5
1 6
2 2
2 4
2 5
2 6
3 3
4 4
5 5
6 6
谢谢
最佳答案
WITH RCTE AS
(
SELECT * , Id AS TopLevelParent
FROM dbo.Category c
UNION ALL
SELECT c.* , r.TopLevelParent
FROM dbo.Category c
INNER JOIN RCTE r ON c.ParentId = r.Id
)
SELECT
r.TopLevelParent AS ParentID
, r.Id AS ChildID
FROM RCTE r
ORDER BY ParentID;
关于SQL 获取所有类别和所有子类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45501853/