mysql:截断一个字段并聚合另一个表中的数据

天麻

我有一个表,该表具有日期时间形式的日期。

mysql> select * from topsmsspammers_hour limit 1;
+---------------------+------+---------+-------+--------------+---------------------------------------------+-------------+--------+----------------+
| date                | spam | suspect | clean | spammer      | spam_campaign_id                            | messageType | policy | isSenderPolicy |
+---------------------+------+---------+-------+--------------+---------------------------------------------+-------------+--------+----------------+
| 2013-06-11 23:00:00 |    1 |       0 |     0 | +12073708065 | NotSet|Message35392HerbisReallyWorkingRealy |           4 |      1 |              1 |
+---------------------+------+---------+-------+--------------+---------------------------------------------+-------------+--------+----------------+
1 row in set (0.00 sec)

mysql>

我想使用此表中的数据来填充具有完全相同的列名但日期被截断(且更改为反映更改的计数)的合计日期日期表,我首先确定了将截断我需要的数据的选择查询:

mysql> select SUBSTRING_INDEX(date, ' ', 1) as date, sum(spam) as spam, sum(suspect) as suspect, sum(clean) as clean, spammer, spam_campaign_id, messageType, policy, isSenderPolicy from topsmsspammers_hour group by date, spammer, spam_campaign_id, messageType, policy, isSenderPolicy limit 1;
+------------+------+---------+-------+--------------+---------------------------------------------+-------------+--------+----------------+
| date       | spam | suspect | clean | spammer      | spam_campaign_id                            | messageType | policy | isSenderPolicy |
+------------+------+---------+-------+--------------+---------------------------------------------+-------------+--------+----------------+
| 2013-06-11 |    1 |       0 |     0 | +12073708065 | NotSet|Message35392HerbisReallyWorkingRealy |           4 |      1 |              1 |
+------------+------+---------+-------+--------------+---------------------------------------------+-------------+--------+----------------+
1 row in set, 1 warning (1.66 sec)

mysql>

然后,我尝试使用该选择查询来填充新表,但未插入截断的日期。而是插入了原始日期:

mysql> insert into topsmsspammers_day (date, spam, suspect, clean, spammer, spam_campaign_id, messageType, policy, isSenderPolicy) select SUBSTRING_INDEX(date, ' ', 1) as date, sum(spam) as spam, sum(suspect) as suspect, sum(clean) as clean, spammer, spam_campaign_id, messageType, policy, isSenderPolicy from topsmsspammers_hour group by date, spammer, spam_campaign_id, messageType, policy, isSenderPolicy limit 1;
Query OK, 1 row affected, 1 warning (1.68 sec)
Records: 1  Duplicates: 0  Warnings: 1

mysql> select * from topsmsspammers_day limit 1;                                                                +---------------------+------+---------+-------+--------------+---------------------------------------------+-------------+--------+----------------+
| date                | spam | suspect | clean | spammer      | spam_campaign_id                            | messageType | policy | isSenderPolicy |
+---------------------+------+---------+-------+--------------+---------------------------------------------+-------------+--------+----------------+
| 2013-06-11 00:00:00 |    1 |       0 |     0 | +12073708065 | NotSet|Message35392HerbisReallyWorkingRealy |           4 |      1 |              1 |
+---------------------+------+---------+-------+--------------+---------------------------------------------+-------------+--------+----------------+
1 row in set (0.00 sec)

mysql>

我尝试然后更改数据以使用不同的名称来填充新表,但这仍然导致将完整日期插入到表中:

mysql> insert into topsmsspammers_day (date, spam, suspect, clean, spammer, spam_campaign_id, messageType, policy, isSenderPolicy) select SUBSTRING_INDEX(date, ' ', 1) as dayDate, sum(spam) as spam, sum(suspect) as suspect, sum(clean) as clean, spammer, spam_campaign_id, messageType, policy, isSenderPolicy from topsmsspammers_hour group by dayDate, spammer, spam_campaign_id, messageType, policy, isSenderPolicy limit 1;
Query OK, 1 row affected (1.75 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> select * from topsmsspammers_day limit 1;
+---------------------+------+---------+-------+--------------+---------------------------------------------+-------------+--------+----------------+
| date                | spam | suspect | clean | spammer      | spam_campaign_id                            | messageType | policy | isSenderPolicy |
+---------------------+------+---------+-------+--------------+---------------------------------------------+-------------+--------+----------------+
| 2013-06-11 00:00:00 |    1 |       0 |     0 | +12073708065 | NotSet|Message35392HerbisReallyWorkingRealy |           4 |      1 |              1 |
+---------------------+------+---------+-------+--------------+---------------------------------------------+-------------+--------+----------------+
1 row in set (0.00 sec)

mysql>

我什至尝试更改插入内容中的名称,但由于名称不是新表中的字段,因此失败了:

mysql> insert into topsmsspammers_day (dayDate, spam, suspect, clean, spammer, spam_campaign_id, messageType, policy, isSenderPolicy) select SUBSTRING_INDEX(date, ' ', 1) as dayDate, sum(spam) as spam, sum(suspect) as suspect, sum(clean) as clean, spammer, spam_campaign_id, messageType, policy, isSenderPolicy from topsmsspammers_hour group by dayDate, spammer, spam_campaign_id, messageType, policy, isSenderPolicy limit 1;
ERROR 1054 (42S22): Unknown column 'dayDate' in 'field list'
mysql>

我想念什么?如何将截断的聚合数据插入到新表中?

一种

看起来好像2013-06-11 23:00:00已更改为2013-06-11 00:00:00,所以dataType A可能存在问题

DB_学习者

检查您的列的数据类型,我想您正在使用日期时间。将其更改为Date数据类型

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Elasticsearch中查询一个字段不等于另一个字段

在一个字段中输入数据并自动更新另一个字段

PXDatabase.Update从同一表/行中的另一个字段更新一个字段值

在Redux表单中基于另一个字段验证一个字段

根据另一个字段更新一个字段

需要一个字段或另一个字段

一个字段的大小写条件取决于另一个表中的另一个字段

Mysql:一个表的一个字段和另一个表的两个字段之间的多重关系

根据另一个字段的值在MongoDB中投影一个字段

组基于另一个字段中的2个相同数据组成一个字段

如何在访问中将表中的一个字段设置为等于表中的另一个字段

字段中的mysql change id是另一个字段=“ transfer”

参考同一张表上的另一个字段更新表中的一个字段Oracle

从另一个表的另一个字段中选择表中的字段

连接表,对一个字段中的所有字段求和,按日期和另一个字段分隔

将1个字段复杂地移动到另一个数据库中的一个字段所需的mysql查询

如何将一个表中的两个字段关联到另一个表中的一个字段

MySQL将数据从一个表复制到另一个字段中的另一个表

在另一个表中计算表的一个字段

将SQL表ID转换为PHP中的另一个字段

检查一个字段的值是否在另一个字段中

确定一个字段是否部分源自 R 中的另一个字段

一个字段基于另一个字段的求和

如何使用 FilterUserMixin 过滤 Django 中的一个字段或另一个字段

Mongodb 比较使用一个字段与对象数组中的另一个字段

Django从另一个表的另一个字段中减去一个字段并保存结果

Mongo 聚合:添加从另一个字段派生的字段

MySql 为另一个表中的每个 id 获取一个字段的总和

mongodb聚合添加从另一个字段派生的字段