【发布时间】:2016-07-14 11:25:53
【问题描述】:
在具有单个参数的存储过程中,我有一个类似于以下性质的查询:
SELECT
ID,
DepartmentID,
FileName
FROM
Document
-- conditional join from here
JOIN
AllowedDepartmentList ON DepartmentID = AllowedDepartmentList.ID
AND @IsAdmin = 'false'
参数为@IsAdmin,数据类型位。
我使用的两个表是 Document 表(请参阅上面查询中的结构)和包含单个 int 列的 AllowedDepartmentList。
我使用这个查询来过滤带有连接的Document 表的返回结果。我不使用 WHERE DepartmentID IN() 子句,因为 AllowedDepartmentList 可以长达 600-700 个项目(对于 IN() 来说太多了,无法在潜在的 1M 记录表中以良好的性能处理)
所以我使用连接进行过滤,但只有在@IsAdmin 参数为false 时才应执行过滤。就像 --conditional join from here 注释之后的行一样。
我尝试了上面的查询,但它没有产生任何记录。我怀疑我使用了错误的联接类型,但我被卡住了。
【问题讨论】:
标签: sql-server tsql join