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

SQL Developer执行update关联更新skuxloc表时报SQL命令未正确结束错误

错误原因

你使用的是MySQL专属的UPDATE JOIN语法,Oracle数据库不支持这种写法,因此执行时会抛出「SQL命令未正确结束」的语法错误。

兼容Oracle的修正方案

提供两种常用实现方式:

方案1:关联子查询实现

适合小数据量场景,写法直观

UPDATE skuxloc sl
SET sl.qty = (
    SELECT SUM(qty) sumqty
    FROM lotxlocxid
    WHERE loc = 'DRSLN7STG'
      AND sku = sl.sku
    GROUP BY sku
)
WHERE sl.sku IN (
    '108720-419-S',
    '108720-419-XS',
    '876070-100-11',
    '876070-100-12',
    '876070-100-9.5',
    '942836-100-10.5',
    '942836-100-6.5',
    '942837-100-6.5',
    'CW5594-100-6',
    'CW5594-100-6.5',
    'CW5594-100-8',
    'DD1583-402-M',
    '942836-100-9'
)
-- 新增过滤避免无对应数据时qty被更新为NULL
AND EXISTS (
    SELECT 1
    FROM lotxlocxid
    WHERE loc = 'DRSLN7STG'
      AND sku = sl.sku
);

方案2:MERGE语句实现

推荐优先使用,性能更优,适合各类数据量场景

MERGE INTO skuxloc sl
USING (
    SELECT sku, SUM(qty) sumqty
    FROM lotxlocxid
    WHERE loc = 'DRSLN7STG'
    GROUP BY sku
) lli
ON (sl.sku = lli.sku)
WHEN MATCHED THEN UPDATE SET sl.qty = lli.sumqty
WHERE sl.sku IN (
    '108720-419-S',
    '108720-419-XS',
    '876070-100-11',
    '876070-100-12',
    '876070-100-9.5',
    '942836-100-10.5',
    '942836-100-6.5',
    '942837-100-6.5',
    'CW5594-100-6',
    'CW5594-100-6.5',
    'CW5594-100-8',
    'DD1583-402-M',
    '942836-100-9'
);

内容的提问来源于stack exchange,提问作者Ravi Shanker Gowda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 13:15:03