如果条目存在和不存在,则返回列表
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 的另一个表中,则返回行列表
FaunaDB - 如何批量更新单个 graphQL 突变中的条目列表?