我有一个表,其外键指向id列同一个表。
pages
=====
id integer primary key autoincrement
name text
parent integer
FOREIGN KEY(parent) REFERENCES pages(id)
当我执行select查询时,是否可以按子记录数对结果进行排序?
答案 0 :(得分:1)
您可以计算具有相关子查询的子项数,并根据该项进行排序:
SELECT id, name
FROM pages
ORDER BY (SELECT count(*)
FROM pages AS p2
WHERE p2.parent = pages.id);
答案 1 :(得分:0)
您可以将其与子记录上的聚合查询一起加入,并根据以下内容进行排序:
SELECT p.*
FROM pages p
JOIN (SELECT parent, COUNT(*) AS cnt
FROM pages
GROUP BY parent) c ON p.id = c.parent
ORDER BY c.cnt