表的自加入/更新与同一表中的数据

时间:2013-05-14 15:51:28

标签: sql-server-2005 self-join

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

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

我想更新到:

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

我尝试构建一个更新语句,对它不太自信所以将它作为等效的select语句运行,看看返回的内容,它似乎在无限循环中运行(有大约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

只有获得最简单的更新声明的经验 - 如果有人能够建议我做错了什么以及纠正它的最佳方法,那么有点困难吗?

由于

安德鲁

1 个答案:

答案 0 :(得分: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