2017-03-04 79 views
1

我有一個表有一個指向id列的同一個表的外鍵。按子記錄計數排序父記錄

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

當我做一個選擇查詢是有可能通過對兒童的記錄數排序的結果?

+1

你想根據直接孩子的數量還是等級(兒童,孫輩等)來排序? – Mureinik

+0

@ Mureinik的問題強調爲什麼樣本數據和期望結果如此有用。 –

+0

由一級孩子訂購 – thelolcat

回答

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 
0

你可以計算孩子的計數與相關子查詢和排序依據是:

SELECT id, name 
FROM pages 
ORDER BY (SELECT count(*) 
      FROM pages AS p2 
      WHERE p2.parent = pages.id);