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

时间:2013-08-30 07:26:08

标签: c# mysql sql database

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()

在第二个查询中,最后两行是完全无效的

2013-08-04,798
2013-08-

有人请告诉我为什么它不起作用。当从今天到最近4个月可用行时,为什么最后一行不同。

第二个查询有错误,如

  

无效的群组连结或我遗失了一些东西。

2 个答案:

答案 0 :(得分:1)

我认为您的结果会被GROUP_CONCAT截断。

正如GROUP_CONCAT的文档所说:

  

结果被截断为group_concat_max_len系统变量给出的最大长度,该变量的默认值为1024.尽管返回值的有效最大长度受到值的约束,但该值可以设置得更高。 max_allowed_pa​​cket的。在运行时更改group_concat_max_len值的语法如下,其中val是无符号整数:

SET [GLOBAL | SESSION] group_concat_max_len = val;

答案 1 :(得分:0)

请尝试一下:

$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();