MySQL GROUP_CONCAT错误.为什么我对GROUP_concat的查询不起作用
本文关键字:GROUP concat 不起作用 查询 为什么 CONCAT 错误 MySQL | 更新日期: 2023-09-27 18:29:47
SELECT CONCAT(`date`,',',`viewcount`)
FROM `stat`
WHERE `stat`.`id` = 1
AND `channelstat`.`date` BETWEEN (SELECT DATE_SUB(NOW(), INTERVAL 90 DAY)) AND NOW()
这个查询效果很好,并以 CSV 格式为我提供了最近 2 天的结果。
我认为要在 MySQL 中生成整个 csv 文件。我试图编写我的命令来做到这一点。当我尝试GROUP_CONCAT时,它效果不佳。现在我从 8 月 4 日以下的日期开始获得行。我很惊讶,因为第一个查询比今天少。
SELECT GROUP_CONCAT(CONCAT(`date`,',',`viewcount`) SEPARATOR ''r'n')
FROM `stat`
WHERE `stat`.`id` = 1
AND `stat`.`date` BETWEEN (SELECT DATE_SUB(NOW(), INTERVAL 90 DAY)) AND NOW()
在第二个查询中,最后 2 行是完全无效的
2013-08-04,798
2013-08-
有人请告诉我为什么它不起作用。为什么从今天到过去 4 个月有可用的行时最后一行不同。
第二个查询有这样的错误
无效的组连接或我缺少某些内容。
我认为您的结果被GROUP_CONCAT截断了。
正如GROUP_CONCAT的文档所说:
结果被截断为 group_concat_max_len 系统变量给出的最大长度,该变量的默认值为 1024。该值可以设置得更高,尽管返回值的有效最大长度受 max_allowed_packet 值的约束。在运行时更改 group_concat_max_len 值的语法如下,其中 val 是无符号整数:
SET [GLOBAL | SESSION] group_concat_max_len = val;
请尝试一下:
$res=$mysqli->query("SELECT id,GROUP_CONCAT(client_id) as clients FROM services WHERE id = 3 GROUP BY id");
$row = $res->fetch_array(MYSQLI_ASSOC);
$result = explode(',', $row['clients']); // $row['clients'] contains string 5,6,7
$res->free();