在PostgreSQL中查询给定值的多个列

时间:2018-09-19 07:06:31

标签: sql postgresql select

我的数据库中有一个表(postgres) 表#1

----------------------------------------------------    
| name  |  id_a |  id_b | id_c | id_d |  id_e | id_f    
----------------------------------------------------

我现在得到一个ID列表。其中一些ID属于id_b,一些ID属于id_c,依此类推,直到id_f。 对于这些ID列表,我需要找到相应的id_a。

方法1 确定哪些id属于id_b,id_c等。 然后在我的mysql查询中使用Multiple in子句获取id_a

select id_a from Table #1 t1 where t1.id_b in () or t1.id_c in ().... or t1.id_f in ();

我正在寻找一种替代方法。

方法2

是否有某种方法可以同时查询所有列以获取给定值。

select id_a from Table #1 t1 where t1.id_b,t1.id_c,..t1.id_f in ();

3 个答案:

答案 0 :(得分:3)

中,您可以使用数组重叠&&的运算符:

SELECT id_a
FROM   mytable
WHERE  ARRAY[id_b, id_c, id_d, id_e, id_f] && ARRAY[value1, value2, ...]

答案 1 :(得分:1)

您可以使用工会

select * from t where id_a in (

select * from 
(select id_b  from t union
select id_c from t union
select id_d from t union
select id_e from t union
select id_f from t
 ) as t1
)

答案 2 :(得分:0)

是的,您可以这样做

SELECT columnA FROM tableA WHERE (columnA, columnB, columnC)::text IN ('TEST', 'TEST2');

可能需要强制转换::text