Sql server 2005 具有相同表中数据的表的自联接/更新
由于将新旧系统数据组合在一个表中,我有一个如下数据列表:Sql server 2005 具有相同表中数据的表的自联接/更新,sql-server-2005,self-join,Sql Server 2005,Self Join,由于将新旧系统数据组合在一个表中,我有一个如下数据列表: Work no Work name ========= ========= 123456 James 123456 James, (123456) 我想更新到: Work_no Work_name ========= ========= 123456 James 123456 James 我尝试构建一个update语句,但对它不太自信,所以将它作为等效的select语句运行,以查看返回
Work no Work name
========= =========
123456 James
123456 James, (123456)
我想更新到:
Work_no Work_name
========= =========
123456 James
123456 James
我尝试构建一个update语句,但对它不太自信,所以将它作为等效的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
只有做最简单的更新语句的经验-如果有人能建议我做错了什么,以及纠正它的最佳方法,我就有点被这个语句卡住了
谢谢
安德鲁:你有基于工作的索引吗? 您是否尝试过:
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
您能提供一些从哪里获取记录的样本数据来更新数据吗?