如何使用引用同一表的select语句更新多行

时间:2019-06-28 19:28:18

标签: sql sql-server tsql

我似乎找不到类似的情况来回答这个问题。

我有一张桌子,销售员,当前名称列显示以下内容:

Undefined - 0
Sam Brett-sbrett
Kelly Roberts-kroberts
Michael Paramore-mparamore
Alivia Lawler-alawler
Ryan Hooker-rhooker
Heather Alford-halford
Cassandra Blegen-cblegen
JD Holland-jholland
Vendor Accounts-VENDOR
Other Accounts-OTHER
Rose Johnson-rjohnson

我开发了以下查询来提取要用来更新此列的名称(减去末尾的ID):

SELECT left(salesperson_name, CHARINDEX('-', salesperson_name) - 1)
FROM Salesperson
------------------------
Undefined 
Sam Brett
Kelly Roberts
Michael Paramore
Alivia Lawler
Ryan Hooker
Heather Alford
Cassandra Blegen
JD Holland
Vendor Accounts
Other Accounts
Rose Johnson

我尝试了以下多种变体,但出现了可理解的“子查询返回的值超过1个...”错误。

begin tran
update salesperson
set salesperson_name = (SELECT left(salesperson_name, CHARINDEX('-', salesperson_name) - 1)
FROM Salesperson) 

我敢肯定,一旦有人纠正了这个问题,我会觉得自己是个白痴,但是目前,我完全不了解如何解决这个问题。谢谢大家,您总是长舒一口气。

1 个答案:

答案 0 :(得分:3)

为什么不简单

update salesperson
set  salesperson_name  = left(salesperson_name, CHARINDEX('-', salesperson_name) - 1)