我最近一直在搞乱MySQL,我无法解决一个问题。
有2张桌子。
第一个是每隔5分钟存储一次在线玩家的数据,第二个是每日统计数据。它是分开的,所以每当男人想要看到上个月的min,avg,max在线玩家时,我都不必疯狂选择。
此查询有效,结果是一个日期尚未在status_statistika中的表。
SELECT 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 )
但是当我尝试这个时
INSERT INTO status_statistika ( SELECT 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 ) );
它没有。
使用phpMyAdmin 4.3.8,MySQL 5.5.41并抛出错误#1062 - 重复输入'2015-01-29'关键'日期'。
想法?
解: 由于点约定以某种方式不接受它,我不得不将一个表中的列'date'重命名为'day'然后它有效
答案 0 :(得分:0)
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'
答案 1 :(得分:0)
看起来你在status_statistika表的日期列上有唯一索引。