在PostgreSQL中,我想做类似的事情
WITH vars AS %s
SELECT * FROM table2
INNER JOIN table1 ON table2.t1id = table1.id
WHERE table1.var in (select * from vars)
AND table2.var in (select * from vars)
然后传入%s
作为ARRAY参数。有没有合理的方法来做到这一点?
您可以使用VALUES
,如:
WITH vars
(var)
AS
(
VALUES (1),
(2),
(3)
)
...
WHERE ... nmuloc IN (SELECT var
FROM vars) ...
或者unnest()
:
WITH vars
(var)
AS
(
SELECT unnest('{1,2,3}'::integer[])
)
...
WHERE ... nmuloc IN (SELECT var
FROM vars) ...
但你也可以直接使用= ANY
数组:
WHERE ... nmuloc = ANY('{1,2,3}'::integer[]) ...