INSERT INTO SELECT mysql试图从选定的数据中插入不同的数据

时间:2015-01-29 01:02:33

标签: mysql phpmyadmin

我最近一直在搞乱MySQL,我无法解决一个问题。

有2张桌子。

  • status_graf(身份证明,日期,时间,在线玩家人数)
  • status_statistika(ID,日期,最小值,平均值,最大值)

第一个是每隔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'然后它有效

2 个答案:

答案 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表的日期列上有唯一索引。