【问题标题】:MySQL LIMIT only parent JOINMySQL LIMIT 只有父 JOIN
【发布时间】:2014-10-16 12:06:43
【问题描述】:

我有一个包含 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 个子行?

【问题讨论】:

  • 你不能。 limit 适用于整个结果。你不能做limit parent(10), child(*) 类型的东西。您只需要获取 10 个父 ID,然后获取这 10 个的所有子 ID。

标签: mysql sql join select limit


【解决方案1】:

您需要限制从父表中提取的行,然后进行连接。

SELECT *
FROM 
(
    SELECT *
    FROM mytable
    LIMIT 10
) parent
LEFT JOIN mytable child on child.`parent_id`=parent.id
  ORDER by parent.id ASC

【讨论】:

  • 我将如何限制子行.. 像 LIMIT 5 每个父行的子行?
  • @user892134 您需要LIMIT 5mytable 的每个组,其中组由parant_id 定义。然后将这个 subuqery 加入到原来的那个。
【解决方案2】:

您可以将父表移动到子查询并在那里应用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

【讨论】:

  • 我将如何限制子行.. 像 LIMIT 5 每个父行的子行?
猜你喜欢
  • 2017-09-07
  • 2011-10-16
  • 2013-01-03
  • 2017-04-25
  • 2014-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多