两列唯一约束上的 Postgres IN 子句?



我有一个表,该表在两列(codeprint中具有唯一约束,以及一个代码和打印数组。见下文:

// these two arrays can get very big
codes: ('A', 'B', 'C', 'D') 
prints: (1, 2, 3, 4)

有没有办法在一个查询中获取代码 A 的行并打印 1、代码 B 和打印 2,依此类推?我最初的想法是使用SELECT * FROM table WHERE code IN (...)查询,但我不太确定如何将print正确"映射"到正确的code

如果有什么不合理的地方,请告诉我,我会尽力澄清。谢谢!

你可以试试这个:

SELECT t.* 
FROM table AS t
INNER JOIN unnest(array['A', 'B', 'C', 'D'], array[1, 2, 3, 4]) AS a(code, print)
ON t.code = a.code
AND t.print = a.print

两个数组中的每个元素在unnest()函数中根据它们在数组中的顺序二二耦合。

select the_table.* 
from the_table
join unnest ('{A,B,C,D}'::text[], '{1,2,3,4}'::int[]) as t(a, b)
on (code, print) = (t.a, t.b);

最新更新