sql - 使用联接更新 SQL 中的查询
问题描述
我正在使用带有 JOIN 子句的 SQL UPDATE 语句。
每当我更新表时,都会为所有行更新相同的数据。
下面是用于更新表的 SQL 查询
update table3 set
[C1]=TABLE2.CUSTOMER_ID,
[C2]=TABLE2.LOAN_AMOUNT,
[C3]=TABLE2.SOURCE,
[C4]=TABLE2.AMT,
[C5]=TABLE2.REG_NO,
FROM TABLE2
INNER JOIN TABLE1 ON TABLE1.CID = TABLE2.CUSTOMER_ID
where TABLE2.CUSTOMER_ID IN (SELECT CID FROM TABLE1)
当我使用 select 语句选择上述查询时,数据不会重复。这是下面的声明。
select
[C1]=TABLE2.CUSTOMER_ID,
[C2]=TABLE2.LOAN_AMOUNT,
[C3]=TABLE2.SOURCE,
[C4]=TABLE2.TEAM_MEMBER,
[C5]=TABLE2.TEAM_LEADER,
FROM TABLE2
INNER JOIN TABLE1 ON TABLE1.CID = TABLE2.CUSTOMER_ID
where TABLE2.CUSTOMER_ID IN (SELECT CID FROM TABLE1)
让我知道更新查询中的问题是什么,因为 select 语句工作正常。
解决方案
对于连接更新,您将要更新的表指定为子句的一部分FROM
,然后在顶部使用其别名引用它:
我注意到
WHERE
一旦你加入了这个子句就完全没有必要了
update t3
set
[C1] = t2.CUSTOMER_ID,
[C2] = t2.LOAN_AMOUNT,
[C3] = t2.SOURCE,
[C4] = t2.AMT,
[C5] = t2.REG_NO,
FROM TABLE2 t2
INNER JOIN TABLE1 t1 ON t1.CID = t2.CUSTOMER_ID
INNER JOIN table3 t3 ON t3.[C1] = t2.CUSTOMER_ID;
推荐阅读
- docker - ERRO [0001] 错误等待容器:上下文已取消
- rstudio - 是否有用于将焦点移至 RStudio 控制台的 R 代码?
- windows - 在 Docker for Windows 上运行 Oracle NETCA/NETGMGR/DBCA
- php - Doctrine 2.9,代理声明错误(错误的函数原型)
- angular - Angular 6缓存层
- android - 带有 viewpager 和底部导航的嵌套片段
- javascript - 如何黑盒除您正在调试的文件之外的所有脚本文件?
- swift - 如何从 xcassets 调用图像?
- javascript - 使用循环避免 React “no-unused-vars”错误
- json - python从字典构造json字符串