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个月可用行时,为什么最后一行不同。
第二个查询有错误,如
无效的群组连结或我遗失了一些东西。
答案 0 :(得分:1)
我认为您的结果会被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;
答案 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();