Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 按日期分组选择记录-可能吗?_Sql_Mysql - Fatal编程技术网

Sql 按日期分组选择记录-可能吗?

Sql 按日期分组选择记录-可能吗?,sql,mysql,Sql,Mysql,我不认为有一个优雅的方式来做到这一点,但这里有。数据库包含5000条时间戳为2年的记录。我需要在一年中的每一天提取记录 所以看起来 2009年9月9日-记录938、记录2、记录493 2009年10月9日-记录260、记录485、记录610 …等等 我不能使用分组方式。有重复的,没关系。我需要给他们看 这可能吗?PHP/MySQL 一种方法是在一年中的每一天进行循环,并使用“WHERE day(created_at)…”进行查询,但显然这并不优雅 我该怎么做?我之前发布的帖子没有令人满意的答案(

我不认为有一个优雅的方式来做到这一点,但这里有。数据库包含5000条时间戳为2年的记录。我需要在一年中的每一天提取记录

所以看起来

2009年9月9日-记录938、记录2、记录493

2009年10月9日-记录260、记录485、记录610

…等等

我不能使用分组方式。有重复的,没关系。我需要给他们看

这可能吗?PHP/MySQL

一种方法是在一年中的每一天进行循环,并使用“WHERE day(created_at)…”进行查询,但显然这并不优雅

我该怎么做?我之前发布的帖子没有令人满意的答案(答案就是我刚才所说的)

MySQL有:

对于每个日期,将返回由逗号连接的表中的所有
rec_id
值。如果需要除
以外的分隔符,
请使用
组(某些列分隔符“-”)

实例 例如,如果您的表看起来像:

+--------+---------------------+
| rec_id | rec_time            |
+--------+---------------------+
|      1 | 2009-11-28 10:00:00 |
|      2 | 2009-11-28 20:00:00 |
|      3 | 2009-11-27 15:00:00 |
|      4 | 2009-11-27 07:00:00 |
|      5 | 2009-11-28 08:00:00 |
+--------+---------------------+
然后这个查询给出:

mysql> SELECT date(rec_time), group_concat(rec_id) 
    -> FROM records GROUP BY date(rec_time);
+----------------+----------------------+
| date(rec_time) | group_concat(rec_id) |
+----------------+----------------------+
| 2009-11-27     | 3,4                  |
| 2009-11-28     | 1,2,5                |
+----------------+----------------------+
警告 请注意,结果受
group\u concat\u max\u len
系统变量的限制,该系统变量默认值仅为1024字节!为了避免撞到这堵墙,您应该在运行查询之前执行以下操作:

SET SESSION group_concat_max_len = 65536;

或者更多,取决于您期望的结果数量。但是这个值不能大于
max\u allowed\u packet

你能解释一下为什么不能使用
groupby
?@Adam:“有重复的,没关系。”@OMG:但是记录是他想要的重复项,而不是日期,这就是分组语句。详见intgr的答案。@Adam:参见前面的问题-我非常清楚Isude想要解决的情况。@OMG:他提出的解决方案非常合理。我看不出它是如何不满足要求的,特别是考虑到这个问题中提出的格式(另一个似乎使用换行符而不是逗号)。
SET SESSION group_concat_max_len = 65536;