Hi!

On Tue, Feb 26, 2008 at 7:04 PM, Phil <[EMAIL PROTECTED]> wrote:
> I have a table countrystats defined as
>
>  CREATE TABLE IF NOT EXISTS `countrystats` (
>   `proj` char(6) NOT NULL default '',
>   `country` char(50) NOT NULL default '',
>   `score` double default NULL,
>   `nusers` int(11) default NULL,
>   `RAC` double default NULL,
>   `last_update` double default NULL,
>   PRIMARY KEY  (`proj`,`country`)
>  ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
>
>  To get the data I can do the following
>
>  select 'rsi',country,sum(metric1) as total,count(*),sum(metric2) from
>  user_table group by country;
>
>  This works fine, but then I tried  to populate the table with
>
>  INSERT INTO countrystats (select 'rsi', country,sum(metric1) as
>  total,count(*) as count,sum(metric2) as sumrac,0 from user_table group by
>  country) on duplicate key update last_update=total -
>  score,score=total,nusers=count,RAC=sumrac;
>
>  which gives me
>
>  ERROR 1054 (42S22): Unknown column 'total' in 'field list'
>
>  now the insert on it's own without the on duplicate works just fine.. so why
>  does the update not like the 'named' column??
>
>  Any ideas? Can it be done in a single statement?

That is an odd error.  But you can work around it this way:

INSERT ...
SELECT * FROM (
  SELECT... GROUP BY
) AS derived_table
ON DUPLICATE KEY ....

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to