gpt4 book ai didi

java - 对于一组 sql 查询,您如何确定哪个结果集包含特定行?

转载 作者:行者123 更新时间:2023-11-29 14:02:31 26 4
gpt4 key购买 nike

我有一组 sql - 查询:

List<String> queries = ...
queries[0] = "select id from person where ...";
...
queries[8756] = "select id from person where ...";

每个查询都从同一个表“person”中选择行。唯一的区别是 where 子句。表“人”看起来像这样:

   id | name | ... many other columns

我如何确定哪些查询将在其结果集中包含某个人?

例如:

List<Integer> matchingQueries = magicMethod(queries, [23,45]); 

“magicMethod”获得的列表过滤了列表“queries”(上面定义的)中存在的所有 sql 查询,并仅返回那些包含 id 为 23 的人或 id 为 45 的人。

为什么我需要它:我正在处理一个包含产品和类别的应用程序,其中类别是定义哪些产品属于它们的 sql 查询(也存储在表中的查询)。现在我有一个要求,管理员必须在项目创建后立即查看项目所属的所有类别。顺便说一句,定义了超过 8000 个类别(到目前为止,还会有更多)。

语言和数据库:java && postgreSQL

谢谢,

最佳答案

我可以想到两种方法。第一种方法是创建一个值对象 Query其中包含两个属性:a Long id查询 ID 和 List<Person>结果。另一种方法是在结果中包含查询 ID。例如

queries[0] = "SELECT id, name, etc, 0 AS query FROM person WHERE ...";
// ...
queries[8756] = "SELECT id, name, etc, 8756 AS query FROM person WHERE ...";

queries[0] = "SELECT id, name, etc, %d AS query FROM person WHERE ...";
// ...
queries[8756] = "SELECT id, name, etc, %d AS query FROM person WHERE ...";

for (int i = 0; i < queries.length; i++) {
String sql = String.format(queries[i], i);
// ...
}

这样你就可以重新获得它了

int queryId = resultSet.getInt("query");

也就是说,这一切都带有一点气味 (DRY)。我建议重新考虑整个方法。随时将其作为一个新问题提出,“我有功能需求 XYZ,我已按如下方式处理它。对吗?”

关于java - 对于一组 sql 查询,您如何确定哪个结果集包含特定行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2594787/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com