Hi,

On Feb 5, 2008 11:26 AM, Yves Goergen <[EMAIL PROTECTED]> wrote:
> Hi,
>
> I've got an error message from MySQL 5.0 that I don't understand.
>
> UPDATE "message_revision" SET "HasData" = 1, "Data" = (SELECT "Data"
> FROM "message_revision" WHERE "MessageId" = 7 AND "RevisionNumber" = 5)
> WHERE "MessageId" = 7 AND "RevisionNumber" = 6
>
> SQL error: [SQLSTATE:HY000, 1093] You can't specify target table
> 'message_revision' for update in FROM clause
>
> What went wrong?

You can't select from a table you're updating at the same time.  What
"at the same time" means is a bit unclear unless you're one of the
MySQL developers ;-)  However, you can do multi-table updates like
this:

UPDATE tbl AS a
  INNER JOIN tbl AS b ON ....
  SET a.col = b.col

If you absolutely need the subquery, there's a workaround, but it's
ugly for several reasons, including performance:

UPDATE tbl SET col = (
   SELECT ... FROM (SELECT.... FROM) AS x);

The nested subquery in the FROM clause creates an implicit temporary
table, so it doesn't count as the same table you're updating.

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

Reply via email to