【发布时间】:2014-01-25 03:56:55
【问题描述】:
MySql 表中的以下数据。
brand_id|image_id|downloads
--------|--------|---------
8 |9 |8
35 |2829 |4
28 |2960 |3
28 |2961 |3
28 |3041 |3
35 |2831 |3
28 |2965 |3
35 |2832 |3
28 |2959 |2
28 |2976 |2
35 |2894 |2
如何在每个品牌中找到具有 GROUP_CONCAT 功能的前 5 位图片
我想跟随返回
brand_id|image_ids
--------|--------------------------
8 |9
35 |2829,2831,2832,2894
28 |2960,2961,3041,2965,2959
以下查询提供预期结果
SELECT brand_id, SUBSTRING_INDEX(GROUP_CONCAT(image_id SEPARATOR ','),',',5) AS image_ids
FROM Table1
GROUP BY brand_id
我在表和brand_id、image_id 中有大量数据,大约有200 万条记录,每次用户下载时都会重复,所以当我运行查询时出现以下错误
MySql Error: %d line(s) were cut by GROUP_CONCAT()
我认为超出了 GROUP_CONCAT 范围, 能否请您提供解决方案,所以我只能获得每个品牌的前 5 名下载,因此不需要 SUBSTRING_INDEX 函数。
谢谢
【问题讨论】:
-
为什么要使用 GROUP_CONCAT?
-
我想要前 5 个图像 id 用逗号分隔每个品牌,有什么办法请提供给我
-
如果第五名的图片与另一张图片并列怎么办?
-
取无关紧要的平局的第一个结果..
标签: mysql sql select group-concat top-n