環境
mariaDB從10.2開始支持遞歸。我的版本是10.4.8-MariaDB
數據表:
CREATE TABLE `digui` (
`id` varchar(50) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
`parent_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`name` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
數據:
寫法
with recursive h as
(
select a.id, a.parent_id, a.name from digui a where a.parent_id ='01'
union all
select b.id, b.parent_id,b.name from digui b,h where h.id=b.parent_id
)
select * from h order by id;
注意,with後面必須是'recursive '
結果: