【发布时间】:2011-09-01 05:31:35
【问题描述】:
我有一个很大的查询要从每个国家/地区提取有关报告的信息,而现在,我可以限制它的唯一方法是在末尾输入Limit 10 或某个数字,这将限制国家/地区。但是,我想要做的是将 group_concat 限制为每个国家/地区 10 个结果,在我的情况下,这会以某种方式将每个单词 group_concat 的实例限制为 10 个。
我目前的查询是:
SELECT country,
GROUP_CONCAT(docID),
GROUP_CONCAT(analyst),
GROUP_CONCAT(region),
GROUP_CONCAT(report),
GROUP_CONCAT(topic),
MAX((date)) AS date,
MAX((docID)) AS docID,
GROUP_CONCAT(date) AS dates,
GROUP_CONCAT(event) AS events,
GROUP_CONCAT(province) AS provinces
FROM reports GROUP BY country
ORDER BY date DESC, docID DESC
我看到有人问过这个问题,但我还没有看到任何真正好的答案。我知道该功能没有内置在 MySQL 中,因为您只能根据字符进行限制。以前有人解决过这个问题吗?
【问题讨论】:
-
我认为您必须执行“每组前 N 个”查询并将 group_concat 应用于其结果。
-
哇,这可能需要编写很多额外的代码。会弄乱它一秒钟。
-
嘎...不要使用重复的字符串连接。使查询难以阅读。请改用heredoc (php.net/heredoc),这样您就可以拥有被一些PHP 包围的“纯”sql。
标签: php mysql concatenation group-concat concat