【问题标题】: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 选项没有任何想法。提前致谢!

【问题讨论】:

  • 我认为这是不可能的。这通常属于应用程序逻辑。
  • 一切皆有可能,但是是的,这通常会在应用程序代码中处理

标签: mysql 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 列检测不正确的值。

【讨论】:

    猜你喜欢
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-15
    • 2018-04-10
    • 1970-01-01
    • 2011-02-21
    相关资源
    最近更新 更多