Return 如果列表中的任何值在 SQL table 中不存在则出错

Return an error if any of the value in the list does not exist in SQL table

我有一个 table 如下所示。

我想使用 IN 子句在 select 查询中传递一个值列表。例如

SELECT * FROM Employee WHERE EmployeeName IN ('Tim','Bob','Jim') 

如果 table.

中不存在值列表​​中的任何记录,是否可以将查询修改为 return 错误

例如

案例一: 如果查询的输入是 ('Tim','Bob','Jim'),它应该 return 一个错误,因为 Jim 不是存在于 table.

案例二: 如果查询的输入是 ('Tim','Bob') 它不应该 return 一个错误,因为列表中的所有条目都存在于数据库 table.

案例 3: 如果查询的输入是 ('Tim','Bob','Rick','Sam','Gary') 它应该不是 return 错误。

简而言之,如果 table 中不存在输入列表中的任何值,我想 return 出错。

我想知道这是否可行,如果可行,是否是一个好的做法。 我们正在使用 SQL SERVER 2014.

您可以将 employee 加入列表并检查 NULL,即在 employee 中未找到匹配的行。在外部查询中对该结果使用 EXISTS

SELECT <your value>
       WHERE EXISTS (SELECT *
                            FROM (VALUES ('Tim'),
                                         ('Bob'),
                                         ('Jim')) v (name)
                                 LEFT JOIN employee e
                                           ON e.employeename = v.name
                            WHERE e.employeename IS NULL);