You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用SELECT语句更新同一Salesperson表中的多行数据

解决UPDATE时的“Subquery returned more than 1 value”错误

嘿,我完全懂你碰到的这个问题!你写的那个UPDATE语句里的子查询会返回所有行的处理结果,数据库根本不知道该把哪个结果对应到哪一行,所以才会抛出那个多值错误。

其实根本不需要用子查询,直接在UPDATE的SET子句里使用你已经验证过的LEFT+CHARINDEX表达式就行——因为在UPDATE操作中,每一行都会基于自己的salesperson_name值独立计算处理后的结果。

正确的更新语句

BEGIN TRAN
UPDATE Salesperson
SET salesperson_name = LEFT(salesperson_name, CHARINDEX('-', salesperson_name) - 1)
-- 先执行SELECT验证结果是否符合预期
SELECT salesperson_name FROM Salesperson
-- 如果没问题,取消注释下面的提交语句
-- COMMIT TRAN

更安全的版本(处理异常数据)

如果你的表中可能存在没有-符号的行(虽然你当前的数据里没有,但提前预防总是好的),可以加个WHERE条件过滤,避免这些行触发错误:

BEGIN TRAN
UPDATE Salesperson
SET salesperson_name = LEFT(salesperson_name, CHARINDEX('-', salesperson_name) - 1)
WHERE CHARINDEX('-', salesperson_name) > 0 -- 只更新包含'-'的行
SELECT salesperson_name FROM Salesperson
-- COMMIT TRAN

这样执行后,你的salesperson_name列就会变成你之前SELECT查询得到的结果:Undefined、Sam Brett、Kelly Roberts... 完全符合你的需求。

内容的提问来源于stack exchange,提问作者jw11432

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:50:38