SELECT *
FROM Tabl tabb
WHERE (tabb.col1, tabb.col2) IN ( (1,2), (3,4))
以上在Oracle中有效,但我试图在专有的SQL引擎中运行,该引擎不支持在IN中使用多个列进行上述查询。
我试图在DB中找到1,2和3,4的组合。
请帮助我实现上述任何替代方案。
我正在寻找一次从Java传递col1和col2的值列表的方法,因此'='可能不是一个选项,因为它可能需要两个SQL语句来实现上述目的。
答案 0 :(得分:5)
这个怎么样?
SELECT
*
FROM
Tabl tabb
WHERE
(tabb.col1 = 1 AND tabb.col2 = 2) OR
(tabb.col1 = 3 AND tabb.col2 = 4)
答案 1 :(得分:0)
你可以这样做:
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
答案 2 :(得分:0)
如果是数字列,并假设值绑定到特定范围 可以使用某个公式
将更多值打包到一个数字中例如假设col1和col2的值为1到1000 公式
N = 10000 * col1 + col2
可以使用,在示例中,select将是
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")