我试图将IF..放入如下的子句ELSE中,但收到错误消息WHERE
“关键字“IF”附近的语法不正确。“)”附近的语法不正确。”
DECLARE @categoryID int
SET @categoryID = 0
SELECT * from SE_Auctions
WHERE ItemCategoryID IN
(
IF @categoryID = 0
SELECT CategoryID from SE_ItemCategory
ELSE
SELECT CategoryID from SE_ItemCategory
WHERE ParentID = @categoryID
OR CategoryID = @categoryID
)
Run Code Online (Sandbox Code Playgroud)
您不能IF以这种方式使用内部子选择。相反,使用 an来测试子句中AND变量的值。这将需要两个组之间具有逻辑关系。@categoryIDWHERE()OR
WHERE
-- First case, @categoryID = 0
(@categoryID = 0 AND ItemCategoryID IN (
SELECT CategoryID from SE_ItemCategory
))
-- Other case, @categoryID <> 0
OR (@categoryID <> 0 AND ItemCategoryID IN (
SELECT CategoryID from SE_ItemCategory
WHERE ParentID=@categoryID OR CategoryID=@categoryID
))
Run Code Online (Sandbox Code Playgroud)