更新正在更新它应该更多的行

时间:2013-10-10 19:18:56

标签: sql tsql sql-server-2008-r2

我有一个带有客户端ID列的小表(145行)。我试图使用此表来确定更新另一个具有~85000行的表的行。我只想更新匹配的145行。

当我执行此查询时,我看到我希望更新的所有行(missing_names是145行表):

SELECT *
FROM MEMBER M
JOIN missing_names MN
ON MN.ID = M.ID
WHERE MN.ID IS NOT NULL

我正在尝试从另一个表中提取数据并执行此更新:

UPDATE MEMBER
SET LastName = R.Client_Last, 
FirstName = R.Client_First, 
Gender = 
FROM Roster R
JOIN missing_names MN
ON MN.ID = R.Client_ID
WHERE MN.ID IS NOT NULL

当我运行此更新语句时,我看到具有相同名字和姓氏的不同ID。名册表具有客户端ID的正确名称。我以为这种类型的更新语句只会从名单表中的匹配行更新成员表中的匹配行?

1 个答案:

答案 0 :(得分:1)

在更新语句的FROM子句中,您根本没有引用MEMBER。这是为什么?我甚至都不知道这意味着什么。这只是一个交叉加入吗?

原来是这样的。这导致所有行都被更新。