Dev*_*per 1 sql t-sql sql-server sql-server-2014
我有以下情况.
如果将值传递给@UserId参数,则需要过滤这些用户记录.
如果没有传递值,那么我需要带上所有记录.
列RecipientId不是NULL.
但是,即使我传递了值,查询下面也会返回所有记录.
DECLARE @UserId INT
SET @UserId = 47
SELECT *
FROM Message MR
WHERE MR.CompanyId = 1
AND (
MR.RecipientId IS NOT NULL
OR MR.RecipientId = @UserId
)
Run Code Online (Sandbox Code Playgroud)
只需在变量上使用布尔表达式
declare @UserId int = null
SELECT *
FROM Message MR
WHERE MR.CompanyId = 1 and (MR.RecipientID = @UserId or @UserId IS NULL)
Run Code Online (Sandbox Code Playgroud)