这个问题可能以前曾被问过,但我还没有找到。我有一个ID为两列的PostgreSQL表。
user_left | user_right |
-----------+------------
1 | 2 |
2 | 3 |
4 | 2 |
如果我选择用户2
,我想返回以下内容:
users |
------+
1 |
3 |
4 |
我知道我将不得不join
进行某些操作,但是我尝试过的操作(inner joins
,outer joins
)使我感到困惑。任何帮助或指导表示赞赏。
答案 0 :(得分:0)
这是一种方法:
select user_left
from t
where user_right = 2
union all
select user_right
from t
where user_left = 2;
您还可以使用case
表达式:
select (case when user_left = 2 then user_right else user_left end)
from t
where 2 in (user_left, user_right);