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

INSERT查询触发Subquery returned more than 1 value错误的原因分析

问题分析

你的INSERT查询报错的核心原因是:在VALUES子句中使用的子查询返回了多行数据。

具体来说,(SELECT EmpId FROM @EmployeeDetails)会返回两条记录(101和102),但VALUES语法中,每个括号内的字段值必须是单个值(或返回单行的子查询),当子查询返回多行时,SQL Server无法将多行数据匹配到单个EmpId字段的位置,因此抛出错误。

正确写法

要批量插入临时表中的员工数据到EmpCopy表,应该使用INSERT...SELECT语法,而不是嵌套子查询的VALUES写法:

DECLARE @EmployeeDetails AS [dbo].[Employee] 

INSERT INTO @EmployeeDetails
VALUES (101), (102) -- 可以合并成一行批量插入临时表

INSERT INTO [dbo].[EmpCopy] (EmpId, Dept)
SELECT EmpId, 'Sales'
FROM @EmployeeDetails

如果一定要用VALUES语法(仅适合单行或明确指定每行的场景),需要为每行单独写值,但显然这不适用于批量插入的场景:

-- 仅适合少量固定行的情况,不推荐用于批量从表中取数据
INSERT INTO [dbo].[EmpCopy] (EmpId, Dept)
VALUES (101, 'Sales'), (102, 'Sales')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 19:22:48