带有JOIN的MySQL LIMIT和GROUP BY

时间:2011-08-23 06:02:06

标签: mysql sql

是否有一种方法可以将GROUP BY一个表列,但是在一个查询中由另一个进行LIMIT。类似的东西:

SELECT items.*, subitems.*
FROM items
LEFT OUTER JOIN subitems ON subitems.subitem_itemId = items.item_id
GROUP BY subitem.subitem_id
LIMIT 10

...但是LIMIT 10适用于项目记录的数量,而不是实际行数。所以我得到10个项目,但是没有子项目,因此可能超过10个实际行(或者如果孩子的数量等于或少于父母,则不行)。

然后我可以在php中循环这些并设置父/子关系。或者有更好的方法吗?

1 个答案:

答案 0 :(得分:4)

您必须使用子查询:

SELECT items.*,subitems.*
FROM (
    SELECT *
    FROM items
    LIMIT 10
) AS items
LEFT OUTER JOIN subitems ON subitems.subitem_itemId = items.item_id
GROUP BY subitem.subitem_id;