不说明数据库的 厂商 与 版本, 很难帮忙啊
我就只粘贴一个 Oracle 的例子吧。
CREATE TABLE test_tree (
test_id INT NOT NULL,
pid INT,
test_val VARCHAR(10),
PRIMARY KEY (test_id)
);
SELECT
LPAD(' ', 2*(LEVEL-1)) || test_val AS test_val
FROM
test_tree
START WITH
pid is null
CONNECT BY PRIOR test_id = pid;
SQL Server 的话,你看看能不能用上 CTE 递归