簡體   English   中英

SQL錯誤:當子查詢遵循=,!=,<,<=,>,> =或將子查詢用作表達式時,不允許這樣做

[英]SQL ERROR: This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression

我在SQL Server 2012中收到此錯誤:

 Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , > , >= or when the subquery is used as an expression.

這是我的腳本:

CREATE PROCEDURE dbo.Update_F_ARTCLIENT

@PK varchar(19)
,@AR_Ref varchar(19)
,@AC_Categorie smallint
,@AC_PrixVen numeric(24,6)
,@AC_Coef numeric(24,6)
,@AC_PrixTTC smallint
,@AC_Remise numeric(24,6)

AS
BEGIN

SET NOCOUNT ON;

UPDATE [dbo].[F_ARTCLIENT]

SET

[AR_Ref] = @AR_Ref
,[AC_Categorie] = @AC_Categorie 
,[AC_PrixVen] = @AC_PrixVen
,[AC_Coef]= @AC_Coef
,[AC_PrixTTC] = @AC_PrixTTC
,[AC_Remise] = @AC_Remise

WHERE (SELECT CONCAT([AR_Ref], [AC_Categorie]) as PK FROM [dbo].[F_ARTCLIENT])= @PK

END

當錯誤描述報告時,您的子查詢返回的值不止一個。 您可以通過以下方式避免更改子查詢:

(SELECT TOP 1 CONCAT([AR_Ref], [AC_Categorie]) as PK FROM [dbo].[F_ARTCLIENT])= @PK)

嘗試將WHERE條件修改為:

WHERE CONCAT([AR_Ref], [AC_Categorie]) = @PK

問題顯然在where子句中。 大概您想在這種情況下進行更新。 一付就是將邏輯更改為in

WHERE @pk in (SELECT CONCAT([AR_Ref], [AC_Categorie]) as PK FROM [dbo].[F_ARTCLIENT])

但是,我注意到子查詢中的表與要更新的數據相同。 您真的是這個意思嗎?

WHERE @pk = CONCAT([AR_Ref], [AC_Categorie])

也就是說,我認為不需要子查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM