按子记录计数订购父记录

时间:2017-03-04 15:29:10

标签: sql sqlite sorting count

我有一个表,其外键指向id列同一个表。

pages
=====
id      integer primary key autoincrement
name    text
parent  integer
FOREIGN KEY(parent) REFERENCES pages(id)

当我执行select查询时,是否可以按子记录数对结果进行排序?

2 个答案:

答案 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