mysql - 将数据从备份移动到当前数据表

标签 mysql insert-into

我需要向当前数据表添加一些备份数据

类似的东西

INSERT INTO `gts`.`Events`
(`accountID`,`deviceID`,`timestamp`,`statusCode`,`latitude`,`longitude`,`gpsAge`,`speedKPH`,`heading`,`inputMask`,`odometerKM`,`creationTime`)
VALUES (SELECT `accountID`,`deviceID`,`timestamp`,`statusCode`,`latitude`,`longitude`,`gpsAge`,`speedKPH`,`heading`,`inputMask`,`odometerKM`,`creationTime` 
FROM `historic`.`BD_01`
WHERE accountID='0001' AND timestamp > UNIX_TIMESTAMP('2014-05-01 00:00:00')
AND timestamp < UNIX_TIMESTAMP('2015-05-31 23:59:59'));

但是我在 SELECT 方面遇到错误。 我做错了什么?

备份数据表的列数少于当前数据表的列数,这就是我指定要使用哪些列的原因。

某些寄存器可以重复,我应该使用 REPLACE INTO 代替吗?

最佳答案

删除 VALUES 关键字。它应该只是INSERT INTO ... SELECT FROM。您的查询应该类似于

INSERT INTO `gts`.`Events`
(`accountID`,
`deviceID`,
`timestamp`,
`statusCode`,
`latitude`,
`longitude`,
`gpsAge`,
`speedKPH`,
`heading`,
`inputMask`,
`odometerKM`,
`creationTime`)
SELECT `accountID`,
`deviceID`,
`timestamp`,
`statusCode`,
`latitude`,
`longitude`,
`gpsAge`,
`speedKPH`,
`heading`,
`inputMask`,
`odometerKM`,
`creationTime` 
FROM `historic`.`BD_01`
WHERE accountID='0001' 
AND timestamp > UNIX_TIMESTAMP('2014-05-01 00:00:00')
AND timestamp < UNIX_TIMESTAMP('2015-05-31 23:59:59');

关于mysql - 将数据从备份移动到当前数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31700533/

相关文章:

mysql - 构建数据库以获得最佳性能

php - 管理员搜索查询

Mysql错误代码: 1292 Incorrect datetime value : ''

mysql - View 不可插入,如果它在 FROM 子句中包含子查询

MYSQL 基于多列的Rank

php - 将数据库中的坐标绘制到谷歌地图中,​​不断检查新值

mysql - 选择并插入具有不同记录的 MySQL

sql-server - SQL Server 2014多次执行存储过程并插入到包含参数的表中

mysql - 使用 View 插入记录

MySQL将同一表中不同列的多值字符串拆分到新表中