0

次のクエリがあります。

CREATE TYPE [dbo].[DeptIdList] AS TABLE(
    [DepartmentId] [smallint] NULL
)
GO
set nocount on

declare @department_ids DeptIdList
declare @tableContainsRecords int = 0

insert into @department_ids
values
(5), (6), (7), (8), (9)

select d.DepartmentID, d.Name, d.GroupName
  from HumanResources.Department as d
  right outer join @department_ids as di on
    d.DepartmentID = di.DepartmentID

@department_ids行が含まれている場合、特定の部門を選択したい。そうでない場合はSELECT、部門テーブルのすべてのレコードを返す必要があります。

これを行う最も簡単で最適な方法は何ですか?

4

1 に答える 1

1

これはうまくいくはずです:

SELECT d.DepartmentID, d.Name, d.GroupName
FROM HumanResources.Department d
WHERE DepartmentID IN (SELECT DepartmentID FROM @department_ids)
OR (SELECT COUNT(*) FROM @department_ids) = 0
于 2012-08-22T15:45:18.253 に答える