【发布时间】:2026-02-12 12:05:01
【问题描述】:
我有 4 张桌子。
-
PRIMARY(CASE_ID, ADDRESS, COUNTRY) -
SECONDARY(CASE_ID, ADDRESS, COUNTRY) -
DEST(CASE_ID, PRIMARY_ADDRESS, SECONDARY_ADDRESS, PRIMARY_COUNTRY, SECONDARY_COUNTRY) -
COUNTRIES(COUNTRY, RISK_SCORE)
更新查询:
update d
set d.PRIMARY_ADDRESS= ...?
,d.PRIMARY_COUNTRY= ...?
,d.SECONDARY_ADDRESS= ...?
,d.SECONDARY_COUNTRY= ...?
from DEST d
join PRIMARY p
on p.CASE_ID=d.CASE_ID
join SECONDARY s
on s.CASE_ID=d.CASE_ID
join COUNTRIES c
... ???
我必须根据COUNTRIES 表中具有最高risk_score 的地址,将DEST 表的地址和国家列更新为PRIMARY 和SECONDARY 表的对应列。 Risk_Score 的值从 0 到 100。
CASE_ID 和 COUNTRY 列可以用作连接列。请帮忙。
【问题讨论】:
-
尝试使用您想要的内容构建选择。将
update d set替换为select。然后,当您的查询返回您想要的内容时。将查询改回来。您可以在更新中使用几乎所有相同的关键字,就像在选择中一样。在这种情况下,我认为您正在寻找case -
您需要加入 COUNTRIES 两次,一次为主要国家,一次为次要国家,分别返回 risk_score 最高的国家。
标签: sql sql-server join sql-update case