Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 具有相同表中数据的表的自联接/更新_Sql Server 2005_Self Join - Fatal编程技术网

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

您能提供一些从哪里获取记录的样本数据来更新数据吗?