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

SQL UPDATE关联INNER JOIN失效:SELECT查询正常但更新操作无法执行

问题原因

你原有UPDATE语句的问题是UPDATE子句指定了rbhl_nodelist作为更新表,但后续SET语句用了别名nl,同时不同数据库的UPDATE关联语法存在差异,所以执行失败。

解决方案

通用兼容写法(支持所有主流SQL数据库)

这种写法不依赖数据库特有的UPDATE JOIN语法,兼容性最强:

UPDATE rbhl_nodelist
SET r = r - 3
WHERE id IN (
    SELECT node1 AS nid FROM rbhl_linkednodes WHERE id = 1
    UNION ALL
    SELECT node2 AS nid FROM rbhl_linkednodes WHERE id = 1
);

MySQL 专属写法

UPDATE rbhl_nodelist nl
INNER JOIN rbhl_linkednodes ln
ON ln.node1 = nl.id OR ln.node2 = nl.id
SET nl.r = nl.r - 3
WHERE ln.id = 1;

PostgreSQL/SQL Server 专属写法

UPDATE rbhl_nodelist nl
SET r = nl.r - 3
FROM rbhl_linkednodes ln
WHERE ln.id = 1 AND (ln.node1 = nl.id OR ln.node2 = nl.id);

以上语句执行后,rbhl_nodelist表中id为6、7的两条记录r值会从15更新为12,满足你同时修改两个符合条件记录的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:45:01