SELECT *
FROM Tabl tabb
WHERE (tabb.col1, tabb.col2) IN ( (1,2), (3,4))
上述方法在 Oracle 中有效,但我正在尝试在专有的 SQL 引擎中运行,该引擎不支持上述在 IN 中具有多个列的查询形式。
我正在尝试在数据库中找到 1,2 和 3,4 的组合。
请帮助我实现上述目标的任何替代方案。
我正在寻找一次从 Java 传递 col1 和 col2 值列表的方法,因此"="可能不是一个选项,因为它可能需要两个 SQL 语句来实现上述目标。
这个怎么样?
SELECT
*
FROM
Tabl tabb
WHERE
(tabb.col1 = 1 AND tabb.col2 = 2) OR
(tabb.col1 = 3 AND tabb.col2 = 4)
你可以做这样的事情:
SELECT *
FROM Tabl tabb
inner join (
select 1 a, 2 b
union select 3, 4
) x
on tabb.col1 = x.a
and tabb.col2 = x.b
如果是数字列,假设值被限制在特定范围内可以使用一些公式将更多值打包成一个数字
例如,假设 Col1 和 Col2 的值从 1 到 1000公式
N = 10000 * col1 + col2
可以使用,在示例中,选择将是
SELECT * FROM Tabl tabb WHERE (10000 * tabb.col1 + tabb.col2) IN ( 10002, 30004)
通常,字符串连接可用于组合多个列值,例如
SELECT * FROM Tabl tabb WHERE (tabb.col1||"&"||tabb.col2) IN ( "1&2", "3&4")