【问题标题】:Check if a data set is present in a database检查数据库中是否存在数据集
【发布时间】:2013-11-15 07:23:39
【问题描述】:

我的 Java 代码中有一些字符串数组。我想检查我正在使用的 mySql 数据库中是否存在(以及哪些)该数组中的值。我尝试这样做的方法是查询数组中每个单独值的数据库。我想知道是否有更有效的方法来做到这一点? 提前致谢。

在我的 java 代码中:

String[] arrProducts=new String[]{"AB","BC","CD","AE","fg","BV","etc"};

在 mySql Products 数据库中,我有一个 productsInventory 表,其中有一列 productId。所以基本上我想检查整个 arrProduct 值是否存在于 productId 列中,而不是单独查询:Select * from ProductsInventory where productId like 'AB'。

编辑1: 所以我的表是这样的:

ProductsInventory->{ProductName,productId}

没错,我正在对数组中的每个值使用一个查询来查询表。

例如: Select * from ProductsInventory where productId like 'AB';

Select * from ProductsInventory where productId like 'BC';
Select * from ProductsInventory where productId like 'CD';

所以根据我的数组中的元素数量,我需要发送多个查询。

编辑 2:我的数组可以根据用户交互而改变。用户输入的内容存储在我的数组中,我需要检查这些值是否存在于数据库表中。

【问题讨论】:

  • 你能分享一下表结构和你的查询吗?

标签: java mysql arrays


【解决方案1】:

您可以将以下内容与“in”关键字一起使用。只需将数组作为值传递给“in”参数,结果查询将如下所示:

select * from ProductsInventory where productId in ("AB","BC","CD","AE","fg","BV","etc");

但是如果数组太长的话,性能会有相当大的下降。

【讨论】:

    【解决方案2】:

    作为IN 结构的替代方案,或rlike 对正则表达式的支持,您可以使用全文搜索。集成解决方案的功能速度可能会受到限制,但 3rd 方解决方案(与 MySQL 和 Java 完美集成)可以为复杂功能提供出色的性能,例如 Sphinx 或 Solr,但需要更多资源:Full text options in MySQL that allows search in natural language

    【讨论】:

      【解决方案3】:

      你可以试试:

       SELECT * from ProductsInventory where productId in ('AB,'BC','CD')
      

      它可能会节省您的时间,但取决于数据库中的内容以及事物的结构,它可能会非常昂贵(时间、处理)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-22
        • 2012-06-01
        • 1970-01-01
        • 2021-11-30
        相关资源
        最近更新 更多