2009-02-17 186 views
1

我有以下的列(MySQL的)数据库表:SQL:在UPDATE语句中嵌套使用目标表FROM子句

NAME | String (Unique) 

STATUS | int 

UPDATE_COUNT | int (Unique) 

我想最大(UPDATE_COUNT)的值,以反映在表中的行上执行的累积更新数。例如,从一个空表:

Insert - (Name=John, Status=0) - // update count on that row is set to 1 

Insert - (Name=Mary, Status=0) - // update count on that row is set to 2 

Update - (Name=John, Status=1) - // update count on that row is set to 3 

Update - (Name=Mary, Status=2) - // update count on that row is set to 4 

等。

因此,对于任何行,是否更新或插入,插入插入或每行更新的更新计数的数值为max( update_count)+ 1.

这个想法是“从mytable中选择max(update_count)”,结果表示执行的插入/更新总数。

我想写插入和更新自动递增update_count的值的SQL语句,是这样的:

"UPDATE MYTABLE SET STATUS=1,UPDATE_COUNT=(SELECT MAX(UPDATE_COUNT) FROM MYTABLE) WHERE NAME IN ('John', 'Mary')" 

然而,这不是有效的SQL,更新语句我不从子句选择含有在同一张表中,mysql中的错误是:

"You can't specify target table 'MYTABLE' for update in FROM clause" 

有关如何限制此限制的任何建议?

回答