2016-08-15 18 views
0
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のレコードを取得します。SQL Serverの2つのステートメントを更新

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つのステートメントとして読み取られているのかわかりません。なぜそれが更新されていないのか分かりません。

この更新ステートメントの作成方法を教えてください。

+0

おそらく 'Address'には' UPDATE'トリガがあります。 –

+1

古いスタイルの結合をもう使用しないでください。[古いスタイルの結合](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old -style-joins.aspx) – NickyvV

+1

奇妙な質問ですが、質問に正しくタグ付けしてもよろしいですか?これらの出力メッセージは、私がよく知っている[tag:sql-server]と似ていません。 –

答えて

0

ADDRESSテーブルにはUpdateトリガーが必要です。そのため、約2454行の2番目のステートメントがあります。

更新量は2454行で、後で選択した同じ番号です。

0

はアドレステーブルを更新するには、以下のスクリプトを使用して考える1つの郵便番号のための参加で複数の行を持っています。

UPDATE a 
SET a.LATITUDE = b.latitude, 
     a.LONGITUDE= b.LONGITUDE 
FROM [ADDRESS] a 
JOIN POSTAL_CODE_LOOKUP b 
     ON a.postal_cd = b.POSTALCODE 
WHERE (a.LATITUDE != b.LATITUDE or a.LONGITUDE !=b.LONGITUDE) 
関連する問題