我有一个简单的表:id
,parent_id
,content
parent_id = 0
项是父项,parent_id > 0
项是儿童
现在我想选择10个父母和他们所有的孩子
使用2个查询很简单,可以在查询1中获取父项,然后在查询2中获取所有子项
但我想在1个查询中完成
我写过这个,但它不起作用:
select *
from blogs
where parent_id in (select id
from blogs
where parent_id = 0
order by id desc
limit 10)
union all
select *
from blogs
where parent_id = 0
order by id
desc limit 10
答案 0 :(得分:1)
请检查下面提到的解决方案。
SELECT
t1.id as parent_id,
t1.content as parent,
GROUP_CONCAT(t2.content) as children
from blogs t1
INNER JOIN blogs t2 ON t2.parent_id = t1.id
WHERE t1.parent_id = 0
GROUP BY t1.id
LIMIT 10;
请在上述查询中更改table_name
和field_name
。
如果它不适合你,请告诉我。