SQL子句中的多个列

时间:2012-11-27 19:37:09

标签: sql multiple-columns in-clause in-operator

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语句来实现上述目的。

3 个答案:

答案 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")