子查询返回了超过1个值。这当子查询跟随不允许=,=,<, <= , >,> =
问题描述:
我的存储过程的代码:子查询返回了超过1个值。这当子查询跟随不允许=,=,<, <= , >,> =
DECLARE @Form NVARCHAR(36)
SET @Form = NEWID()
SELECT *
INTO #s
FROM [2290_Form]
WHERE PK_2290F_key = @inputkey
INSERT INTO [2290_Form]
VALUES (@Form,
(SELECT #s.FK_C_B_key FROM #s),
(SELECT #s.is_vin_correction FROM #s),
(SELECT #s.is_amendment FROM #s),
(SELECT #s.amendment_category FROM #s),
(SELECT #s.is_final_return FROM #s),
(SELECT #s.first_used_month FROM #s),
(SELECT #s.tax_year FROM #s),
(SELECT #s.tax_amt FROM #s),
(SELECT #s.additional_amt FROM #s),
(SELECT #s.credit_amt FROM #s),
(SELECT #s.payment_mode FROM #s),
(SELECT #s.consent_tag FROM #s),
(SELECT #s.status FROM #s), GETDATE(), NULL)
INSERT INTO [2290_Vehicles]
VALUES (NEWID(), @Form,
(SELECT vin FROM [2290_Vehicles] WHERE FK_2290_F_key = @inputkey),
(SELECT category FROM [2290_Vehicles] WHERE FK_2290_F_key = @inputkey),
(SELECT is_logging FROM [2290_Vehicles] WHERE FK_2290_F_key = @inputkey),
(SELECT is_agricultural FROM [2290_Vehicles] WHERE FK_2290_F_key = @inputkey),
(SELECT is_mileage_exceed FROM [2290_Vehicles] WHERE FK_2290_F_key = @inputkey),
(SELECT weight_current FROM [2290_Vehicles] WHERE FK_2290_F_key = @inputkey),
(SELECT weight_old FROM [2290_Vehicles] WHERE FK_2290_F_key = @inputkey),
(SELECT credit_reason FROM [2290_Vehicles] WHERE FK_2290_F_key = @inputkey),
(SELECT buyer FROM [2290_Vehicles] WHERE FK_2290_F_key = @inputkey),
(SELECT effective_date FROM [2290_Vehicles] WHERE FK_2290_F_key = @inputkey),
(SELECT tax_amt FROM [2290_Vehicles] WHERE FK_2290_F_key = @inputkey), GETDATE(), NULL)
SET @Formkey = @Form
我得到的错误是:
子查询返回多个值。当 子查询遵循=,!=,<,< =,>,> =或当子查询用作 表达式时,这是不允许的。
答
DECLARE @Form NVARCHAR(36)
SET @Form = NEWID()
INSERT INTO dbo.[2290_Form]
SELECT @Form, FK_C_B_key, is_vin_correction, ..., GETDATE(), NULL
FROM dbo.[2290_Form]
WHERE PK_2290F_key = @inputkey
INSERT INTO dbo.[2290_Vehicles]
SELECT NEWID(), @Form, vin, category, ..., tax_amt, GETDATE(), NULL
FROM dbo.[2290_Vehicles]
WHERE FK_2290_F_key = @inputkey
答
你的一个子查询2290_Vehicles
返回多行多。要找到可能的结果,请尝试以下操作:
select FK_2290_F_key
from [2290_Vehicles]
group by FK_2290_F_key
having count(FK_2290_F_key) > 1
您的子查询返回的行太多。因此,错误消息 –
插入后的所有选择可能容易出错 – TheGameiswar
当您的查询返回多个行时,在将此类型的错误设置为变量时发生此类错误。 –