0

テーブル内の古いシステム データと新しいシステム データを組み合わせているため、次のようなデータのリストがあります。

Work no    Work name
=========  =========
123456     James
123456     James, (123456)

そして、私は次のように更新したい:

Work_no    Work_name
=========  =========
123456     James
123456     James 

更新ステートメントを作成しようとしましたが、あまり自信がなかったので、同等の選択ステートメントとして実行して、何が返されるかを確認しましたが、無限ループで実行されているようです (約 200k のレコードがあり、停止したときはどこかでした) 200 万で返されました!) 最初に返されたものは問題ないように見えましたが、重複しているように見えました:

UPDATE c1
set c1.Work_name = c.Work_name
FROM table c1
INNER JOIN table c ON c1.Work_no = c.Work_no 
where charindex(',',c1.Work_name) > 0

最も単純な更新ステートメントを実行した経験しかありません-誰かが私が間違っていることとそれを修正する最良の方法を提案できれば、これに少し固執しますか?

ありがとう

アンドリュー

4

1 に答える 1

0

work_no で構築されたインデックスはありますか? 試しましたか:

UPDATE #table set Work_name = (select top 1 c.Work_name FROM #table c where #table.Work_no = c.Work_no and charindex(',',c.Work_name) = 0) where charindex(',',c.Work_name) > 0
于 2013-10-01T12:11:33.950 に答える