我的数据库中有一个表(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 ();
答案 0 :(得分:3)
在postgres中,您可以使用数组重叠&&
的运算符:
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