Php Mysql限制与分组方式

Php Mysql限制与分组方式,php,mysql,Php,Mysql,我有三张桌子: 类别 商业 业务类别具有字段、id、类别id、业务id 一类属于许多行业 一个企业可以有多个类别 现在我正在尝试这样做,我希望得到以下结果: Category 1 buisenn 1 buisness 2 buisnesss 3 Category 2 business 1 for cat2 business 2 for cat 2 business 3 for cat 2 我只想展示每个类别的三个业务 这是我尝试的查询: SELECT `category`.`nam

我有三张桌子:

类别 商业 业务类别具有字段、id、类别id、业务id 一类属于许多行业 一个企业可以有多个类别

现在我正在尝试这样做,我希望得到以下结果:

Category 1

buisenn 1
buisness 2
buisnesss 3


Category 2

business 1  for cat2
business 2 for cat 2
business 3 for cat 2
我只想展示每个类别的三个业务

这是我尝试的查询:

SELECT  `category`.`name` AS `category_name`,
        `category`.`id` AS category_id,
        `business`.`avg_service_price` AS avg_price,
        `business`.`name` AS `business_name`,
        `business`.`address`,
        `business`.`address2`,
        `business`.`city`,
        `business`.`state`,
        `business`.`zipcode`,
        `business`.`id` AS `business_id`,
        `business`.`lat`,`business`.`lon` 
    FROM `business_category`
    LEFT JOIN `business`
        ON `business_category`.`business_id` = `business`.`id` 
    LEFT JOIN `category`
        ON  `business_category`.`category_id` = `category`.`id`
    GROUP BY `business`.`id`
    LIMIT 0,3
它只显示了3个结果

谁能告诉我这个主意


谢谢你不能那样做。Limit仅用于获取查询的3行,您需要的是获取所有结果,但每个类别仅包含3个元素

解决方案可以是,首先获取所有类别,然后为每个类别创建一个限制为3的查询。 另一个解决方案可能是获得所有结果,然后删除那些您不想要的结果


第一个解决方案速度较慢,但第二个解决方案需要更多内存。

您需要与groupwise max等效的解决方案。请参阅,该解决方案有以下示例:

SELECT
    province, n, city, population
FROM
  ( SELECT  @prev := '', @n := 0 ) init
JOIN
  ( SELECT  @n := if(province != @prev, 1, @n + 1) AS n,
            @prev := province,
            province, city, population
        FROM  Canada
        ORDER BY
            province   ASC,
            population DESC
  ) x
WHERE  n <= 3
ORDER BY  province, n;

删除限制0,3?它将显示所有结果。我需要每个类别3个业务表。我不清楚你们的预期产出是多少。我建议你加上它。但是使用LIMIT 0,3将得到查询的前三个结果,因此,即使其余的查询是正确的,您也永远不会为每个类别获得三个业务。我只需要为每个类别获得三个业务。谢谢