奇怪:无法在 FROM 子句中指定更新目标表

发布于 2024-10-14 21:07:04 字数 285 浏览 2 评论 0原文

我不明白为什么我的查询在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

忘年祭陌 2024-10-21 21:07:04

这是正确的。您无法在嵌套查询中选择您现在正在更新的同一个表。

更好的解决方案是在更新中使用联接。 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

时光无声 2024-10-21 21:07:04

这应该适用于多表更新:

UPDATE tableA, tableB
SET tableA.Field1 = round(round(tableB.FieldA, 4) - round(tableA.FieldA,4), 4)
WHERE tableA.id=tableB.id AND tableA.id2=tableB.id2;

http://dev.mysql.com/doc/refman/5.0/en/update.html

This should work with multi-table update:

UPDATE tableA, tableB
SET tableA.Field1 = round(round(tableB.FieldA, 4) - round(tableA.FieldA,4), 4)
WHERE tableA.id=tableB.id AND tableA.id2=tableB.id2;

Search for join in http://dev.mysql.com/doc/refman/5.0/en/update.html

弥枳 2024-10-21 21:07:04

您可以使用同一个表的多个副本来完成此操作,如下所示:

UPDATE tablename, tablename b 
SET tablename.col1 = val 
WHERE tablename.col1 = b.col1 AND b.col2 IN (val1,val2,val3);

上面查询中的 val 也可以是像 b.col2 这样的变量。

you can do it using multiple copies of the same table like this:

UPDATE tablename, tablename b 
SET tablename.col1 = val 
WHERE tablename.col1 = b.col1 AND b.col2 IN (val1,val2,val3);

The val in the above query can also be a variable like b.col2.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文