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

问题描述

我在数据库表中有一个网络设备列表。用户可以使用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选项用尽了所有想法。预先感谢!

解决方法

在创建临时表“搜索”之后,我只找到一种解决方案,假设其中包含一个名为“主机名”的列,并带有值。我找不到将值列表(“ 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列检测不正确的值。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...