gpt4 book ai didi

java - 具有多个 where 子句的选择查询

转载 作者:行者123 更新时间:2023-12-02 07:07:14 27 4
gpt4 key购买 nike

我有一个序列号列表:111111、222222、AAAAAA、FFFFFF,我想从表中返回相应的值或 null,具体取决于是否值(value)存在。

目前我循环遍历序列号列表,使用以下语句进行查询:

"SELECT cnum FROM table WHERE serial_num = " + serialNumber[i];

然后使用该值(如果返回)。

我更愿意只执行一次查询并获得类似于以下内容的结果:

 Row | cnum
------------
1 | 157
2 | 4F2
3 | null
4 | 93O
5 | null
6 | 9F3

是否有查询可以执行此操作,或者我是否陷入了循环?

最佳答案

听起来好像您有某种 Java 数组或序列号集合,也许您想检查这些数字是否在 DB2 表中找到,并且您希望在以下位置执行整个列表一次,而不是一次一个。想法不错。

因此,您希望拥有一组行,可以使用它们对表进行左连接,其中 null 表示相应的序列不在表中。有几个答案已经开始使用这种方法。但他们没有返回您的行号,并且他们正在使用 SELECT UNION,这似乎是一种迂回的方式来获得您想要的东西。

VALUES 子句

您的 FROM 子句可以是 "nested-table-expression"这可以是 (fullselect)带有相关子句。 (fullselect) 又可以是 VALUES 子句。所以你可以有这样的东西:

FROM (VALUES (1, '157'), (2, '4F2'), (3, '5MISSING'), (4, '93O'), ...
) as Lst (rw, sn)

然后您可以将其 LEFT JOIN 到表中,并获得您要求的两列结果表:

SELECT Lst.rn, t.serial_num
FROM (VALUES (1, '157'), (2, '4F2'), (3, '5MISSING'), (4, '93O'), ...
) as Lst (rw, sn)
LEFT JOIN sometable t ON t.serial_num = Lst.sn

使用此方法,您可能需要一个循环来使用集合中的值构建动态 SQL 语句字符串。

如果它是嵌入式 SQL,我们也许能够引用包含您的序列号的主机数组变量。但可惜的是,在 Java 中,我不知道如何在 SQL 中直接使用列表来管理,而不使用一些循环。

关于java - 具有多个 where 子句的选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15953370/

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