sql-server - 如果列表中的任何值在 SQL 表中不存在,则返回错误
问题描述
我有一张像下面这样的桌子。
我想使用 IN 子句在选择查询中传递值列表。例如
SELECT * FROM Employee WHERE EmployeeName IN ('Tim','Bob','Jim')
如果表中不存在值列表中的任何记录,是否有办法修改查询以返回错误。
例如
案例 1:如果查询的输入是('Tim','Bob','Jim'),它应该返回错误,因为 Jim 不存在于表中。
情况 2:如果查询的输入是('Tim','Bob')它不应该返回错误,因为列表中的所有条目都存在于 DB 表中。
情况 3:如果查询的输入是('Tim','Bob','Rick','Sam','Gary')则不应返回错误。
简而言之,如果输入列表中的任何值在表中不存在,我想返回一个错误。
我想知道这是否可行,如果可行,这是一个好习惯。我们正在使用 SQL SERVER 2014。
解决方案
您可以将连接留employee
在列表中并检查NULL
ie 中未找到匹配的行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);
推荐阅读
- javascript - jquery获取p和span数据并放入变量中
- asp.net-core - 评分系统如何将我的评分值 (0-5) 转换为宽度 %
- java - 仅当另一个 Primary bean 不存在时,如何使 Spring bean Primary
- forms - 无法提交 Facebook 应用审核请求 - 表单的条件未勾选
- python - 如何使用抓取的硒数据更新 Google 表格
- java - console.warn:SearchSettings:“获取:不存在设置文件,新配置文件?” (new Error("", "(unknown module)")) 使用 Selenium 和 Java
- python-3.x - 添加新的熊猫系列并设置为 false
- reactjs - 为空时的ant design输入方向
- processing - 使翻译的对象与某物发生碰撞
- sql - 如何计算来自不同datagridview的每列总和之间的差异并将其显示在datagridview中