【发布时间】:2014-07-28 03:48:44
【问题描述】:
以下 UPDATE 查询工作正常:
UPDATE product SET gcode = '9a8a'
WHERE gcode = '81cd'
AND NOT EXISTS (SELECT 1 FROM
(SELECT 1 FROM product WHERE gcode = '9a8a') AS x
)
但使用额外的嵌套选择来解决 MySQL 错误:
1093: You can't specify target table 'product' for update in FROM clause
有没有办法在这种特殊情况下改进这个查询?
这个查询只是用一个新值更新具有指定值的字段的所有记录。但是如果它们已经是具有新值的记录,我不想更新。看来这可能是一种常见的情况。
【问题讨论】:
-
可能是因为1?那是什么?
-
当子查询和更新中的表不同时,我看不出你是如何得到这个错误的
-
要么你因为某种原因没有显示完整的 sql,要么它不是 SQL。没有嵌套的
select 1 from,SQl 似乎很好。 -
@FuzzyTree - 表名应该相同。修好了。
标签: mysql sql-update subquery