我有一个博客系统和一个简单的版本控制系统。我的数据库是:
|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结果:
我的问题是:是否可以计算所有子版本的数量?比如:
发布于 2014-02-14 15:34:32
您的查询不能保证工作正常。您可以通过扩展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_idhttps://stackoverflow.com/questions/21783151
复制相似问题