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 个月有可用的行时最后一行不同。

第二个查询有这样的错误

无效的组连接或我缺少某些内容。

MySQL GROUP_CONCAT错误.为什么我对GROUP_concat的查询不起作用

我认为您的结果被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();