gpt4 book ai didi

php - Mysql 通过 Group by 进行限制

转载 作者:行者123 更新时间:2023-11-29 07:50:09 25 4
gpt4 key购买 nike

我有三个表:

  1. 类别
  2. 商业
  3. business_category(包含字段、id、category_id、buisness_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 的查询。另一种解决方案可能是获取所有结果,然后删除那些您不想要的结果。

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

关于php - Mysql 通过 Group by 进行限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26697690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com