如果条目存在和不存在,则返回列表

Posted

技术标签:

【中文标题】如果条目存在和不存在,则返回列表【英文标题】:Return a list if entries who exist and not exist 【发布时间】:2020-08-13 07:48:52 【问题描述】:

我在数据库表中有一个网络设备列表。用户可以使用 Web 界面获取有关这些设备的杂项信息(以WHERE hostname IN('hostname1','hostname2',...) 结尾的查询)。假设由于拼写错误,五个给定条目之一是错误的。所以通常我从数据库查询中得到四个答案,错误的答案仍然会被忽略。我需要检测到不存在的条目给用户一个提示,如:

hostname1 exist -> requested Information
hostname2 exist -> requested Information
hostname3 NOT EXIST
hostname4 exist -> requested Information
hostname5 exist -> requested Information

我对 EXISTS 选项没有任何想法。提前致谢!

【问题讨论】:

我认为这是不可能的。这通常属于应用程序逻辑。 一切皆有可能,但是是的,这通常会在应用程序代码中处理 【参考方案1】:

创建临时表“搜索”后,我只找到一种解决方案,假设包含一个名为“主机名”的列,其中包含值。我找不到将值列表('hostname1'、'hostname2'、'hostname4')转换为记录列表的方法。所以这里是一列的临时表:

表“搜索”列“主机名”

hostname1
hostname2
hostname4

这里创建“搜索”表:

CREATE TEMPORARY TABLE IF NOT EXISTS search AS  SELECT 'hostname1' as hostname from host union SELECT 'hostname2' as hostname  from host union  select 'hostname4' as hostname  from host

然后在列上左连接:

CREATE TEMPORARY TABLE IF NOT EXISTS search AS  SELECT 'hostname1' as hostname from host union SELECT 'hostname2' as hostname  from host union  select 'hostname4' as hostname  from host; select * from search left join host ON host.hostname = search.hostname;

这是输出列(主机名、id、主机名):

hostname1   1   hostname1   
hostname2   2   hostname2   
hostname4   NULL    NULL    

在我的例子中,hostname4 不存在于初始表主机中,因此可以通过结果的 id 列检测不正确的值。

【讨论】:

以上是关于如果条目存在和不存在,则返回列表的主要内容,如果未能解决你的问题,请参考以下文章

如果所有记录都存在于 sql server 的另一个表中,则返回行列表

如果索引列表遍历不匹配,则返回“Nothing”

FaunaDB - 如何批量更新单个 graphQL 突变中的条目列表?

使用 C# 检查 List 中是不是存在值

返回第一个表中的所有数据,如果存在,则返回第二个表中的 1 个数据

ASP。 NET MVC 5:如果用户是管理员,则返回所有用户的列表