在一个查询中合并两个文件

时间:2016-08-04 08:01:52

标签: mysql sql

我有一张桌子用于"添加朋友"这是表: -

tb_addfriend

id   mainUid    Uid
--------------------
1    12         8
2    8          7
3    8          2
4    4          8

我想获得id = 8的朋友。我尝试了这样的查询

Select mainUid from tb_addfriend where mainUid=8 OR Uid=8

结果就像这样

mainUid
--------
12
8
8
4

但我需要这样的结果

-----------
12
7
2
4

怎么可能。

3 个答案:

答案 0 :(得分:3)

SELECT CASE WHEN mainUid=8 THEN Uid ELSE mainUid END 
FROM tb_addfriend 
WHERE mainUid=8 OR Uid=8

答案 1 :(得分:2)

您正在选择mainUid列作为结果。但是mainUid列不包含'7'或'2'值。

您需要确定何时需要使用CASE语句选择mainUid或Uid。然后,当mainUid字段为8时,您可以使用Uid字段。

SELECT 
    CASE mainUid
         WHEN 8 THEN Uid
         ELSE mainUid
    END CASE
FROM tb_addfriend 
WHERE mainUid=8 OR Uid=8;

答案 2 :(得分:1)

尝试以下查询。

select main from tbl_1 where main<>8 union
select uid from tbl_1 where uid<>8 order by main desc

您可以使用UNION运算符组合两个或多个SELECT语句的结果集。