Это не делает то, что вы думаете:
SELECT (3,6) as ids
Это создает запись с двумя безымянными столбцами. Итак, если вы запустите:
WITH vars AS (
SELECT [3,6] as ids
)
SELECT *
FROM vars;
Результат:
ids._field_1 ids._field_2
3 6
Вы можете приблизиться к тому, что вы хотите, используя массивы:
WITH vars AS (
SELECT [3,6] as ids
)
SELECT u.id
FROM users u
WHERE u.id IN (SELECT v.id FROM vars v CROSS JOIN UNNEST(v.ids) id);
Хотя в На практике это часто записывается как:
WITH vars AS (
SELECT [3,6] as ids
)
SELECT u.id
FROM users u JOIN
(vars CROSS JOIN
UNNEST(v.ids) id
)
ON u.id = id;
Или, более подробная форма без массивов:
WITH vars AS (
SELECT 3 as id UNION ALL
SELECT 6
)
SELECT u.id
FROM users u
WHERE u.id IN (SELECT v.id FROM vars v);