1
我有一個表有一個指向id列的同一個表的外鍵。按子記錄計數排序父記錄
pages
=====
id integer primary key autoincrement
name text
parent integer
FOREIGN KEY(parent) REFERENCES pages(id)
當我做一個選擇查詢是有可能通過對兒童的記錄數排序的結果?
我有一個表有一個指向id列的同一個表的外鍵。按子記錄計數排序父記錄
pages
=====
id integer primary key autoincrement
name text
parent integer
FOREIGN KEY(parent) REFERENCES pages(id)
當我做一個選擇查詢是有可能通過對兒童的記錄數排序的結果?
您可以根據所用的子記錄彙總查詢加入它和排序:
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
你可以計算孩子的計數與相關子查詢和排序依據是:
SELECT id, name
FROM pages
ORDER BY (SELECT count(*)
FROM pages AS p2
WHERE p2.parent = pages.id);
你想根據直接孩子的數量還是等級(兒童,孫輩等)來排序? – Mureinik
@ Mureinik的問題強調爲什麼樣本數據和期望結果如此有用。 –
由一級孩子訂購 – thelolcat