奇怪:无法在 FROM 子句中指定更新目标表
我不明白为什么我的查询在 phpMyAdmin 中运行良好,并且在我的 php 脚本中它给了我消息:无法在 FROM 子句中指定要更新的目标表!
update tableA set
Field1 = round(round((select (select br.FieldA from tableB br where tableA.id=br.id and tableA.id2=br.id2) as x),4) - round(tableA.FieldA,4),4)
I don't understand why my query runs fine in phpMyAdmin and in my php script it gives me the message: can't specify target table for update in FROM clause!!!
update tableA set
Field1 = round(round((select (select br.FieldA from tableB br where tableA.id=br.id and tableA.id2=br.id2) as x),4) - round(tableA.FieldA,4),4)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是正确的。您无法在嵌套查询中选择您现在正在更新的同一个表。
更好的解决方案是在更新中使用联接。 http://dev.mysql.com/doc/refman/5.5/en /update.html
That is correct. You cannot select in the nested query the same table you're updating now.
The better solution will be to use joins in your update. http://dev.mysql.com/doc/refman/5.5/en/update.html
这应该适用于多表更新:
在 http://dev.mysql.com/doc/refman/5.0/en/update.html
This should work with multi-table update:
Search for
join
in http://dev.mysql.com/doc/refman/5.0/en/update.html您可以使用同一个表的多个副本来完成此操作,如下所示:
上面查询中的
val
也可以是像b.col2
这样的变量。you can do it using multiple copies of the same table like this:
The
val
in the above query can also be a variable likeb.col2
.