Да , оператор IN
может использоваться с парами слева. В более общем смысле, левая часть может быть значением строки с несколькими столбцами. Смотри https://www.sqlite.org/rowvalue.html.
Альтернативой типизации повторяющегося списка операторов OR является создание временной таблицы со списком литеральных значений, которые можно «запросить» в выражении подзапроса. Индексы также могут быть добавлены в временную таблицу, чтобы сделать ее более эффективной.
CREATE TEMP TABLE IF NOT EXISTS coordinates (lat, long, UNIQUE (lat, long));
INSERT OR IGNORE INTO coordinates VALUES (29.42682, 81.774118), (29.63561, 81.622355);
SELECT *
FROM elevation
WHERE (lat, long) IN coordinates;
Обратите внимание на более короткую ссылку, поскольку временная таблица содержит одинаковое количество полей. Можно использовать более подробный WHERE (lat, long) IN (SELECT * FROM coordinates)
, но здесь это не обязательно.