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

多表Inner Join关联问题:更新Shipments表的距离字段

解决Shipments表距离更新的SQL问题

我来帮你梳理下问题所在,你的SQL里重复关联了Distances表,这是导致错误结果的核心原因。咱们只需要把Shipments和Locations关联拿到两地的location_id,再和Distances做一次精准匹配就够了,不用两次连接Distances。

错误原因分析

你原SQL中分别连接了两次Distances表,但没有把出发地和目的地的location_id同时和Distances的对应字段做关联,这会导致匹配到的是不相关的距离记录,自然得不到正确结果。

正确的SQL语句

UPDATE Shipments SHP
INNER JOIN Locations LOC_FROM ON SHP.`from` = LOC_FROM.location
INNER JOIN Locations LOC_TO ON SHP.`to` = LOC_TO.location
INNER JOIN Distances DST 
    ON LOC_FROM.location_id = DST.from_location_id 
    AND LOC_TO.location_id = DST.to_location_id
SET SHP.distance = DST.distance;

语句逻辑说明

  • 用LOC_FROM和LOC_TO两个别名区分出发地和目的地的Locations关联,避免混淆
  • 通过同时匹配出发地和目的地的location_id,精准定位Distances表中两地对应的距离记录
  • 直接将Distances表中匹配到的distance值赋值给Shipments的distance字段
  • 注意:from是SQL关键字,所以用反引号(`)包裹起来避免语法冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 08:07:51