Использование кортежей в предложении «IN» SQL

У меня есть таблица, содержащая поля group_id и group_type, и я хочу запросить в таблице все записи, имеющие какой-либо кортеж ( идентификатор группы , тип группы ) из списка кортежей. Например, я хочу иметь возможность сделать что-то вроде:

SELECT *
FROM mytable
WHERE (group_id, group_type) IN (("1234-567", 2), ("4321-765", 3), ("1111-222", 5))

Очень похожий вопрос уже задан по адресу: с использованием кортежей в sql в разделе , но предложенное там решение предполагает, что список кортежей должен быть взят из другого стола. В моем случае это не работает, если значения кортежа жестко запрограммированы.

Одно из решений - использовать конкатенацию строк:

SELECT *
FROM mytable
WHERE group_id + STR(group_type, 1) IN ("1234-5672", "4321-7653", "1111-2225")

Но проблема в том, что таблица довольно велика и выполнение конкатенации строк и преобразования для каждой записи было бы очень дорогостоящим.

Есть предложения?

51
задан Community 23 May 2017 в 02:18
поделиться