我正在尝试使用max(amount)
更新行的数量$this -> mysqli->query("
UPDATE `table`
SET `amount` = amount - '".$diff."'
WHERE `s_ID` = '".$id."'
AND `amount` = (SELECT MAX(amount) FROM table)
") ;
答案 0 :(得分:4)
不,你不是。您无法使用子查询中的相同表从表中进行更新。
http://dev.mysql.com/doc/refman/5.0/en/update.html
请参阅本页末尾(评论之前):
目前,您无法更新表并从子查询中的同一表中进行选择。
如果您决定将其分为两个单独的查询,一个用于获取最大值而另一个用于执行更新,请记住在事务中执行此操作,并使用Select ...进行更新;所以mysql会锁定你要更新的记录,否则,并发会产生一些令人讨厌的问题(如果它适用于你的特定情况)。