Search code examples
mysqlsqlmysql-error-1093

Select from same table as an Insert or Update


Clearly the following is incorrect.

INSERT INTO `aTable` (`A`,`B`) VALUES((SELECT MAX(`A`) FROM `aTable`)*2),'name');

I get the value:

SQL query:

INSERT INTO `aTable` (`A`, `B` )
VALUES 
(
  (
   SELECT MAX(`A`)
   FROM `aTable`
  ) *2
 , 'name'
)

MySQL said:

1093 - You can't specify target table 'aTable' for update in FROM clause

So, I'm trying to make a bitmap table, each row corresponds to one Bit, and has a 'map' value.

To insert in the table, I don't want to do two queries, I want to do one. How should I do this?

No one commented on this, but since I am trying to make a bitmap, it should be * 2 not ^ 2, my mistake, please note that is why the comments often say ^ 2, it was an error in the version that the commenters read.


Solution

  • try:

    insert into aTable select max(a)^2, 'name' from aTable;
    

    or

    insert into aTable select max(a)^2, 'name' from aTable group by B;
    

    If you need a join, you can do this:

    insert into aTable select max(a)^2, 'name' from aTable, bTable;
    

    My "Server version" is "5.0.51b-community-nt MySQL Community Edition (GPL)"