2014-02-14 51 views
0

我有一個簡單的版本控制系統的博客系統。我的DB是:得到子查詢並計爲colomn

|id------|parent_id|title------------------| 
|1  |1  |Test title    | 
|2  |1  |Test title 2   | 
|3  |1  |Last test title  | 
|4  |4  |Another blog item  | 

我的查詢只得到最新的版本(僅3和4):

SELECT * FROM 
(SELECT * FROM blogs ORDER BY id DESC) b 
GROUP BY b.parent_id 

結果:

  • 最後測試題
  • 另一個博客item

我的問題是:是可以統計的所有子版本的數量?這樣的:

  • 最後測試題(3)
  • 另一個博客項(1)
+0

是的,這是可能的。 – hjpotter92

回答

1

您查詢是不能保證工作。您可以通過擴展here瞭解MySQL組。基本上,*產生的字段不能保證來自「第一」記錄。我想強調,這被記錄爲不起作用,即使它可能在實踐中起作用。

寫您的查詢的另一種方法是:

select b.*, p.numchildren 
from (select parent_id, max(id) as maxid, count(*) as numchildren 
     from blogs 
     group by parent_id 
    ) p join 
    blogs b 
    on b.id = p.maxid 
order by b.parent_id 
+0

謝謝戈登!這是我想要的! – angelique000