Я использую приведенный ниже запрос для выбора рекурсивного сверху вниз
например,
Если tagId
равно 1, будут получены строки, 1 > 3,4, > 5
теперь работает нормально,
но я хочу знать, как получить порядок результатов по «Имени» на каждом уровне ( тот же родительский идентификатор) получить строки 1 > 4,3 > 5
?
Я пробовал добавлять ORDER BY "Name"
после SELECT * FROM "Tag" WHERE "TagId" = $1
, но не работало.
и если добавить после SELECT * FROM tag_tree
, уровень беспорядка станет 1,4,5,3
не тем, что я хочу.
CREATE TABLE IF NOT EXISTS "Tag"(
"TagId" SERIAL NOT NULL,
"ParentTagId" integer,
"Name" varchar,
PRIMARY KEY ("TagId")
);
TagId | ParentTagId | Name |
1 | | a |
2 | | b |
3 | 1 | b |
4 | 1 | a |
5 | 3 | a |
var query = 'WITH RECURSIVE tag_tree AS (
(
SELECT * FROM "Tag" WHERE "TagId" = $1
)
UNION ALL
SELECT child.* FROM "Tag" child
JOIN tag_tree parent on parent."TagId" = child."ParentTagId"
)
SELECT * FROM tag_tree';