5
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 语句才能实现上述目标。

4

3 回答 3

5

这个怎么样?

SELECT
    *
FROM
    Tabl tabb
WHERE
    (tabb.col1 = 1 AND tabb.col2 = 2) OR
    (tabb.col1 = 3 AND tabb.col2 = 4)
于 2012-11-27T19:39:19.727 回答
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
于 2012-11-27T19:41:07.100 回答
0

如果是数字列并且假设值被限制在特定范围内,则可以使用某些公式将更多值打包到一个数字中

例如假设 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")
于 2016-06-03T21:57:29.283 回答