従業員のリストをSELECT
に設定している一般的なクエリがあります。私のパラメータがsearchType = 'omit
の場合、そのテーブルに存在するかどうかをチェックして、その検索に表示されないようにすることはできません。上記の例では データを省略するWHERE句のSQL Case文
-- Params
@searchType varchar(10)
-- Temp Table
DECLARE @omit AS TABLE (userID INT)
INSERT INTO @omit(userID) VALUES (123)
INSERT INTO @omit(userID) VALUES (456)
INSERT INTO @omit(userID) VALUES (789)
-- Query
SELECT *
FROM Employees
WHERE userID NOT IN(
CASE
WHEN @searchType = 'omit'
THEN (SELECT userID FROM @omit)
ELSE ''
END
)
、私は手順を実行して、私のparamとして
omit
を渡された場合、それは彼らの
userID
が一時テーブルに存在しないすべての従業員を選択します。
これを試してみると、Subquery returned more than 1 value
のエラーが表示されます。
これを設定するにはどうすればよいですか?
クエリ 'SELECT userID FROM @ omit'は1行以上を返しますので、代わりに' NOT EXISTS'を使うといいでしょう – Sami