我有一个包含20个父行和38个子行的mysql表。子行具有列parent_id
,即父行的id
。
这是查询
SELECT child.*,parent.title as ptitle FROM mytable parent
LEFT JOIN mytable child on child.`parent_id`=parent.id
ORDER by parent.id ASC
现在我试图做分页。我每页只需要10个父行。我如何以仅获取10个父行但仍然获取子行的方式限制结果?
另外,我如何限制子行...就像每个父行只显示5个子行一样?
答案 0 :(得分:3)
您需要限制从父表中提取的行,然后进行连接。
SELECT *
FROM
(
SELECT *
FROM mytable
LIMIT 10
) parent
LEFT JOIN mytable child on child.`parent_id`=parent.id
ORDER by parent.id ASC
答案 1 :(得分:0)
您可以将父表移动到子查询并在那里应用limit
子句:
SELECT child.*, parent.title as ptitle
FROM (SELECT *
FROM mytable
LIMIT 10) parent
LEFT JOIN mytable child on child.`parent_id`=parent.id
ORDER by parent.id ASC