从查找表中的两列中选择相同的值

时间:2012-11-30 12:42:35

标签: sql join

我有一张表如下

UserID  CONSUMERID
1          2
1          3
1          4
5          1

这是一个查阅列,用户可以在此处使用。
我需要查询表并获得单个列输出,以便例如如果ID = 1,我应该能够查询userid并获取userid = 1的所有consumnerid数据,同时查询获取所有userid数据,其中consumerid = 1 ..所有结果应该在一列中。换句话说,将两列都查询为1并返回相反的列值。

2 个答案:

答案 0 :(得分:3)

使用UNION(隐式DISTINCT)或UNION ALL,如下所示:

SELECT UserId FROM table WHERE ConsumerId = 1
UNION ALL
SELECT ConsumerId FROM table WHERE UserID = 1;

SQL Fiddle Demo

答案 1 :(得分:0)

你可以在没有联合的情况下做到这一点,只需使用逻辑:

select (case when UserId = 1 then Consumerid else UserId end) as id
from t
where UserId = 1 or ConsumerId = 1