【发布时间】:2021-10-06 05:00:55
【问题描述】:
我正在使用带有 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 语句工作正常。
【问题讨论】:
-
您需要一个介于 table3 和 table1 或 table2 之间的条件,例如
WHERE table3.someid = table2.someotherid没有它,您选择的每一行都将应用于 table3 中的每一行。 -
@MatBailie;谢谢。我尝试添加条件“INNER JOIN table3 ON table3.[C1] = table2.CUSTOMER_ID”,但结果相同。 I,e 数据重复(每一行都相同)
-
您与
table3中的行没有关联,因此每一行都在更新。您不应该更新您关联的同一列! -
密切注意我说过要把它放在
WHERE子句中的事实(Stu 提到的相关性),但您却使用了JOIN。
标签: sql sql-server sql-update inner-join insert-update