SQL в предложении несколько столбцов

SELECT *
FROM Tabl tabb
WHERE (tabb.col1, tabb.col2) IN ( (1,2), (3,4))

Вышеописанное работает в Oracle, но я пытаюсь работать в проприетарном механизме SQL, который не поддерживает формирование запроса с несколькими столбцами в IN.

Я пытаюсь найти комбинации 1,2 и 3,4 в БД.

Пожалуйста, помогите мне с любыми альтернативами для достижения вышеизложенного.

Я ищу способы передачи списка значений для col1 и col2 из Java за один раз, поэтому "=" может не быть вариантом, так как для достижения вышеуказанного может потребоваться два оператора SQL.

3 ответа

Как насчет этого?

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")
Другие вопросы по тегам