请问老师为什么 update 更新语句也会使用到相关子查询呢
来源:3-6 CRUD操作(二)

小学生6年级
2020-08-02
这里有点困惑:
update t_tmp set sal = 10000 where
deptno = (select deptno from t_dept where dname = “sales”)
我翻译一下子查询的步骤,麻烦老师看看合适么:每次都取 t_tmp 表中的一行数据带到子查询里面,然后子查询出合适的 deptno 后,还要对比一下该 deptno 看看和 t_tmp 表中当前这一行的 deptno 相等不相等,相等才更新。这算是一次子查询,而这里总计会执行 t_tmp 表中总行数的子查询次数,请问是这个意思吗?
写回答
2回答
-
神思者
2020-08-02
只要是where子句的子查询都是相关子查询,跟缓存没关系。这条update语句可以写成表连接的语法,把子查询当成临时表做连接就效率高了很多。你百度一下update语句的表连接,这个写法是高效的
10 -
小学生6年级
提问者
2020-08-02
而其他有缓存优化的,也是按顺序执行,只不过第一次执行以后,子查询的结果集被缓存下来,之后每次直接去结果集中取。我的理解是这样的,请问老师合适么? 如果是的话,为什么不做引擎 ast 解析优化,让子查询先来?
本人是非科班的前端,在数据库这方面比较薄弱,这里向老师请教一下。。
00
相似问题
关于购物车表
回答 4
老师,为什么这里只能用AND
回答 1