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);
我有一个 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);