关于 update table_1 set ... where table_1.id = (select table_1.id from table_1 where ...) 的问题

2014-05-29 11:40:11 +08:00
 timepast
如题的语句在mysql中报错:You can't specify target table table_1 for update in FROM clause

解决办法是:
UPDATE table_1 SET set...
WHERE
table_1.x = (
SELECT pick.id FROM (SELECT tmp.id FROM table_1 tmp WHERE tmp.x = ? AND tmp.x = ?) pick )
但是这个语句的性能是不是不如分步操作的性能呢?
4832 次点击
所在节点    MySQL
3 条回复
Dwyanetalk
2014-05-29 14:28:30 +08:00
不明白这是要干什么?感觉在绕圈子……select后面的where直接当update的where不行吗?
timepast
2014-05-29 15:34:02 +08:00
@Dwyanetalk 报错
lu18887
2014-05-29 16:07:07 +08:00
结合查询计划进行分析吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/114838

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX