简单的mysql语句,我找不到

时间:2015-11-05 16:01:45

标签: mysql sql union

很抱歉不知道给这个问题的标题是什么,因为它可能会让人感到困惑。

我的表只有两列 - userName1和userName2 我有这个:

SELECT * FROM `Friends` WHERE `userName1` = 'aName'
UNION
SELECT * FROM `Friends` WHERE `userName2` = 'aName'

此sql语句的结果为我提供了aNameuserName1中包含“userName2”的行。 如何过滤结果以仅显示OTHER条目?避免返回包含'aName'

的列

3 个答案:

答案 0 :(得分:4)

您可以使用:

select userName2 from friends where userName1 = 'aName'
union
select userName1 from friends where userName2 = 'aName';

没有union的方法:

select distinct (case when userName1 = 'aName' then userName2 else userName1 end)
from friends
where 'aName' in (userName1, userName2);

答案 1 :(得分:0)

我会尝试这样的事情:

Transformer

您可能还要求它们不能都等于'aName'

SELECT userName2 as 'name' FROM Friends WHERE userName1 = 'aName'
UNION
SELECT userName1 as 'name' FROM Friends WHERE userName2 = 'aName'

(......可以改进)

答案 2 :(得分:-2)

如果是这种情况,您可以使用INNER JOIN

  SELECT *
    FROM `Friends` f
   INNER JOIN `Friends` f1
    ON f.userName1 = f1.userName2