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

使用INSERT SELECT插入附加数据时报Msg 512子查询返回多值错误

错误原因

你在VALUES子句中嵌套的SELECT userid查询返回了多个符合条件的用户ID,而VALUES语法要求每个参数位置只能传入单个值,因此触发了子查询返回多值的语法错误。

解决方案

直接使用INSERT ... SELECT语法,不需要写VALUES子句,将固定值直接作为SELECT的返回列即可批量插入所有符合条件的用户数据,修正后代码如下:

INSERT INTO [database].[dbo].[table1] (
    userid_fk,
    year,
    month,
    leaveCredit,
    leaveCreditReason,
    addedOn,
    addedBy
)
SELECT 
    userid,
    YEAR(GETDATE()),
    MONTH(GETDATE()),
    1.5,
    'monthly leave',
    GETDATE(),
    '1'
FROM [database].[dbo].[table2]
WHERE user_isactive = 1
  AND date_of_joining < DATEADD(m, -1, DATEADD(mm, DATEDIFF(m, 0, GETDATE()), 0))

如果业务需求确实只需要插入单个用户,也可以给子查询添加TOP 1限制,确保子查询只返回单个值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:15:02