【发布时间】:2016-12-21 15:55:34
【问题描述】:
UPDATE ADDRESS
SET ADDRESS.LATITUDE = b.latitude,
ADDRESS.LONGITUDE= b.LONGITUDE
FROM POSTAL_CODE_LOOKUP b
WHERE ADDRESS.postal_cd = b.POSTALCODE
AND (address.LATITUDE != b.LATITUDE OR address.LONGITUDE !=b.LONGITUDE)
11:20:23 [BEGIN - 2454 row(s), 0.437 secs] Command processed
11:20:23 [BEGIN - 2454 row(s), 0.437 secs] Command processed
... 2 statement(s) executed, 4908 row(s) affected, exec/fetch time: 0.874/0.000 sec [2 successful, 0 warnings, 0 errors]
执行更新后,我运行下面的 SQL 并获得 2454 条记录。
select
a1.POSTAL_CD, b.POSTALCODE,
a1.LATITUDE, b.LATITUDE,
a1.LONGITUDE, b.LONGITUDE
from
ADDRESS a1, POSTAL_CODE_LOOKUP b
where
a1.postal_cd = b.postalcode
and (a1.LATITUDE != b.LATITUDE or a1.LONGITUDE != b.LONGITUDE);
是的,我已经提交了,而且记录没有改变。我不明白为什么将更新解读为 2 条语句。我不明白为什么它不更新。
我应该如何写这个更新声明?
【问题讨论】:
-
也许
Address有一个UPDATE触发器。 -
你不应该再使用旧式连接了:old-style joins
-
奇怪的问题,但你确定你已经正确标记了这个问题吗?这些输出消息与我熟悉的sql-server 不同。
标签: sql sql-server sql-server-2008 sql-update