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

在postgresql中查询给定值的多个列,sql,postgresql,select,postgres,Sql,Postgresql,Select,Postgres,我的数据库中有一个表(postgres) 表1 我现在得到了一个ID列表。其中一些id属于id_b,一些属于id_c,依此类推,直到id_f为止。 对于这些id列表,我需要找到相应的id_a 方法#1 识别哪些id属于id_b、id_c等。 然后在mysql查询中使用multiple-in子句获取id\u a select id_a from Table #1 t1 where t1.id_b in () or t1.id_c in ().... or t1.id_f in (); 我正在寻找

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

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

方法#1 识别哪些id属于id_b、id_c等。 然后在mysql查询中使用multiple-in子句获取id\u 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 ();
在中,可以使用数组重叠,
和&
,运算符:

SELECT id_a
FROM   mytable
WHERE  ARRAY[id_b, id_c, id_d, id_e, id_f] && ARRAY[value1, value2, ...]
你可以用union

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
)

是的,你可以这样做

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

演员阵容
::text
可能是必需的

我正在使用postgresql
(columnA,columnB,columnC)::text
将这些列组合在一起,这样您的输出看起来像
valueA,valueB,valueC
如果您想让这项工作正常,它需要像(“%TEST%”)一样不确定性能与其他解决方案的对比
SELECT columnA FROM tableA WHERE (columnA, columnB, columnC)::text IN ('TEST', 'TEST2');