INSERT INTO SELECT mysql 正在尝试插入与所选数据不同的数据
INSERT INTO SELECT mysql is trying to insert different data from the selected ones
最近一直在折腾MySQL,有一个问题解决不了
有 2 个 table。
- status_graf(id,日期,时间,在线人数)
- status_statistika(id,date,min,avg,max)
第一个是每5分钟存储一次在线玩家数据,第二个是每天统计一次。它是分开的,所以我不必 运行 每当有人想查看上个月的最小、平均、最大在线玩家时疯狂选择。
此查询有效,结果是一个 table,其中的日期尚未在 status_statistika 中。
SELECT date,MIN(playersonline),AVG(playersonline),MAX(playersonline)
来自 status_graf
按日期分组
日期不在(
SELECT 日期
来自 status_statistika
按日期分组
)
但是当我尝试这个时
插入 status_statistika (
SELECT 日期,MIN(球员线),AVG(球员线),MAX(球员线)
来自 status_graf
按日期分组
日期不在(
SELECT 日期
来自 status_statistika
按日期分组
)
);
没有。
使用 phpMyAdmin 4.3.8、MySQL 5.5.41 并抛出错误 #1062 - 密钥 'date'.
的重复条目“2015-01-29”
想法?
解决方案:
由于点约定以某种方式不接受它,我不得不将一个 table 中的列 'date' 重命名为 'day' 然后它起作用了
INSERT INTO status_statistika (
SELECT DISTINCT date,MIN(playersonline),AVG(playersonline),MAX(playersonline)
FROM status_graf
GROUP BY date
HAVING date NOT IN (
SELECT date
FROM status_statistika
GROUP BY date
)
);
注意 'DISTINCT'
看起来您在 status_statistika table 中的日期列上有唯一索引。
最近一直在折腾MySQL,有一个问题解决不了
有 2 个 table。
- status_graf(id,日期,时间,在线人数)
- status_statistika(id,date,min,avg,max)
第一个是每5分钟存储一次在线玩家数据,第二个是每天统计一次。它是分开的,所以我不必 运行 每当有人想查看上个月的最小、平均、最大在线玩家时疯狂选择。
此查询有效,结果是一个 table,其中的日期尚未在 status_statistika 中。
SELECT date,MIN(playersonline),AVG(playersonline),MAX(playersonline) 来自 status_graf 按日期分组 日期不在( SELECT 日期 来自 status_statistika 按日期分组 )
但是当我尝试这个时
插入 status_statistika ( SELECT 日期,MIN(球员线),AVG(球员线),MAX(球员线) 来自 status_graf 按日期分组 日期不在( SELECT 日期 来自 status_statistika 按日期分组 ) );
没有。
使用 phpMyAdmin 4.3.8、MySQL 5.5.41 并抛出错误 #1062 - 密钥 'date'.
的重复条目“2015-01-29”想法?
解决方案: 由于点约定以某种方式不接受它,我不得不将一个 table 中的列 'date' 重命名为 'day' 然后它起作用了
INSERT INTO status_statistika (
SELECT DISTINCT date,MIN(playersonline),AVG(playersonline),MAX(playersonline)
FROM status_graf
GROUP BY date
HAVING date NOT IN (
SELECT date
FROM status_statistika
GROUP BY date
)
);
注意 'DISTINCT'
看起来您在 status_statistika table 中的日期列上有唯一索引。