【发布时间】:2012-04-24 00:38:57
【问题描述】:
这里有点麻烦。
表一:
CID, Name, HID
(001-233, Test1, 12345)
表 2:
CID, Name, HID, Primary
(001-233, Test1, 12345, '')
想要使用名为'Y' 的常量值更新存在与Table1 的连接的Table2
所以声明如下:
UPDATE T2 SET T2.Primary = 'Y'
FROM T2
INNER JOIN T1
ON (T1.CID = T2.CID
AND T1.HID = T2.HID)
这条语句最终只是更新了所有的行,就好像它只对一个 id 进行连接而不对另一个进行连接?我最终放弃并通过连接两个 ide 字段 CID+HID 使用单个“id”进行WHERE IN 子查询。但我想了解为什么使用正确的连接不起作用。
Table1 是 CTE..
【问题讨论】:
-
这应该可行,您能否添加一些您希望不会更新的示例数据?
-
这对我有用。我想它会更新所有行,因为 T1 中的每一行 T2 都有匹配的行。
-
不起作用,T1 是 CTE。我不明白这让我发疯。它以另一种方式工作,我只是不明白。
-
@sridawg:你能把查询放在包含 CTE 的地方吗?
-
对我来说很好用:sqlfiddle.com/#!3/a98ce/9
标签: sql sql-server