UNION ALL параметризованный postgres - PullRequest
0 голосов
/ 01 октября 2019

Я хотел бы сделать что-то подобное в postgres

select * from table t where t.one = 11 AND t.two = 12 and t.three = 13
union all
select * from table t where t.one = 21 AND t.two = 22 and t.three = 23

Я пробовал join lateral и inner join s, но производительность слишком плохая. Так что мне нужно union all эти запросы, но я не хочу просто объединять неопределенное количество этих значений. Есть ли что-то вроде https://stackoverflow.com/a/55484168/1321514 для postgres?

1 Ответ

4 голосов
/ 01 октября 2019

Я вообще не вижу необходимости в СОЮЗЕ. И я не понимаю, как здесь поможет JOIN

Ваш запрос эквивалентен:

select * 
from table t 
where (t.one,t.two,t.three) in ( (11,12,13), (21,22,23) );

В качестве альтернативы вы можете попробовать присоединиться к предложению VALUES:

select t.* 
from table t 
  join (
     values (11,12,13), (21,22,23) 
  ) as x(c1,c2,c3) on t.one = x.c1 
                  and t.two = x.c2
                  and t.three = x.c3;
...