You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过JOIN优化UPDATE语句?多嵌套SELECT改写需求

问题描述

我写了两条用于更新数据库行的SQL语句,示例如下:

更新RECIVER_DATA表的语句:

UPDATE RECIVER_DATA
SET SURNAME = (SELECT JSON_VALUE(customMethodToConvert2JSON(content),'$.basicInformations')
               FROM PERSON_DATA PD
               WHERE PD.ID = (SELECT RD.ID_PERSON_DATA
                              FROM RECIVER_DATA RD
                              WHERE RD.PERSON_NUMBER = 'XYZ')
               )
WHERE PERSON_NUMBER = 'XYZ';

更新ORDER_DETAILS表的语句:

UPDATE ORDER_DETAILS
SET SURNAME = (SELECT JSON_VALUE(customMethodToConvert2JSON(content),'$.basicInformations')
               FROM PERSON_DATA PD
               WHERE PD.ID = (SELECT RD.ID_PERSON_DATA
                              FROM RECIVER_DATA RD
                              WHERE RD.PERSON_NUMBER = 'XYZ')
               )
WHERE ORDER_ID = (SELECT RD.ID_ORDER
                  FROM RECIVER_DATA RD
                  WHERE RD.PERSON_NUMBER = 'XYZ');

我的数据库包含4个表,表关联逻辑为:RECIVER_DATA通过ID_PERSON_DATA关联PERSON_DATA,通过ID_ORDER关联ORDER_DETAILS。我尝试用JOIN改写但没成功,想问能不能用JOIN替换这些语句里多次对RECIVER_DATA的查询?

优化方案:使用JOIN改写UPDATE语句

当然可以用JOIN来优化,这样只需查询一次RECIVER_DATA表就能获取所需关联数据,减少重复查询,提升语句效率。

1. 更新RECIVER_DATA表的JOIN写法

UPDATE RD
SET RD.SURNAME = JSON_VALUE(customMethodToConvert2JSON(PD.content), '$.basicInformations')
FROM RECIVER_DATA RD
JOIN PERSON_DATA PD ON RD.ID_PERSON_DATA = PD.ID
WHERE RD.PERSON_NUMBER = 'XYZ';

直接将RECIVER_DATA与PERSON_DATA关联,一次性获取要更新的姓氏值,避免嵌套子查询多次访问RECIVER_DATA。

2. 更新ORDER_DETAILS表的JOIN写法

UPDATE OD
SET OD.SURNAME = JSON_VALUE(customMethodToConvert2JSON(PD.content), '$.basicInformations')
FROM ORDER_DETAILS OD
JOIN RECIVER_DATA RD ON OD.ORDER_ID = RD.ID_ORDER
JOIN PERSON_DATA PD ON RD.ID_PERSON_DATA = PD.ID
WHERE RD.PERSON_NUMBER = 'XYZ';

通过两次JOIN,先关联ORDER_DETAILS和RECIVER_DATA,再关联PERSON_DATA,一次性拿到所有关联数据,仅查询一次RECIVER_DATA即可完成更新条件匹配和值的获取。

注:以上写法适用于支持UPDATE ... JOIN语法的数据库(如SQL Server、MySQL等),若为Oracle等数据库,语法会略有调整,但核心逻辑一致——通过JOIN减少重复表访问。

内容的提问来源于stack exchange,提问作者Lulex97

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 16:32:20