0

由于将新旧系统数据组合在一个表中,我有一个这样的数据列表:

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

我想更新为:

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

我尝试构建一个更新语句,对它不太有信心,所以将它作为一个等效的选择语句运行以查看返回的内容,它似乎在无限循环中运行(大约有 20 万条记录,当我停止它时它在某个地方在 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 回答