我找不到的简单 mysql 语句

simple mysql statement that I can not find

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

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

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

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

的列

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

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

您可以使用:

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);

我会尝试这样的事情:

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

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

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

(...可以改进)