On Wed, Jul 9, 2008 at 9:37 AM, Phil <[EMAIL PROTECTED]> wrote:
> Is it possible to do an insert into with subselect and group by with an
> additional on duplicate insert ?
>
> CREATE TABLE NEW_TABLE (
>  `a` varchar(10),
>  `b` double
> ) engine=MyISAM;
>
>
> INSERT INTO NEW_TABLE (select old.x,sum(old.y) from OLD_TABLE old group by
> old.a)
>  on duplicate key
>  update b=sum(old.y);

The following I should work for you...

mysql> CREATE TABLE NEW_TABLE (
    ->  `a` varchar(10),
    ->  `b` double
    -> ) engine=MyISAM;
Query OK, 0 rows affected (0.33 sec)

mysql> CREATE TABLE OLD_TABLE (x int,y int);
Query OK, 0 rows affected (0.36 sec)

mysql> ALTER TABLE NEW_TABLE ADD UNIQUE(`a`);
Query OK, 0 rows affected (0.20 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> INSERT INTO OLD_TABLE VALUES(1,1),(1,1),(2,2);
Query OK, 3 rows affected (0.17 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> INSERT INTO NEW_TABLE VALUES(2,3);
Query OK, 1 row affected (0.14 sec)

mysql> INSERT INTO NEW_TABLE
    ->  SELECT x, sum(y)
    ->  FROM OLD_TABLE
    ->  GROUP BY X
    ->  ON DUPLICATE KEY UPDATE b = VALUES(b);
Query OK, 2 rows affected (0.13 sec)
Records: 2  Duplicates: 1  Warnings: 0





-- 
Rob Wultsch
[EMAIL PROTECTED]
wultsch (aim)

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

Reply via email to