我有这种表
a_id | b_id
1 | 2
2 | 1
2 | 1
1 | 2
3 | 1
1 | 4
如果是1
我希望获得a_id=1
或b_id=1
之类的
result
2
3
4
它与两列相似,但在每对列中使用相同的值(反之亦然)。有没有办法解决这个问题?
答案 0 :(得分:1)
您可以使用union
:
select b_id as result from t where a_id = 1 union
select a_id from t where b_id = 1;
还有其他方法。 。 。说,横向joi:
select distinct x.result
from t, lateral
(values (case when a_id = 1 then b_id else a_id end) x(result)
where 1 in (a_id, b_id);
甚至更直接的查询:
select distinct x(case when a_id = 1 then b_id else a_id end) as result
from t
where 1 in (a_id, b_id);
因为您要删除重复项,distinct
将主导任何方法的性能。