1.
sql中with xxxx as () 是对一个查询子句做别名,同时数据库会对该子句生成临时表;
with recursive 则是一个递归的查询子句,他会把查询出来的结果再次代入到查询子句中继续查询,如下面的语句
WITH recursive t ( ID, NAME, PARENT_ID) AS (
SELECT
a.ID,
a.NAME,
a.PARENT_ID
FROM
account a
WHERE
a.id = xxx
UNION ALL
SELECT
ac.ID,
ac.NAME,
ac.PARENT_ID
FROM
account ac,
t
WHERE
ac.parent_id = t.id
) SELECT
ID,
NAME,
PARENT_ID
FROM
t
ORDER BY parent_id desc