很抱歉不知道给这个问题的标题是什么,因为它可能会让人感到困惑。
我的表只有两列 - userName1和userName2 我有这个:
SELECT * FROM `Friends` WHERE `userName1` = 'aName'
UNION
SELECT * FROM `Friends` WHERE `userName2` = 'aName'
此sql语句的结果为我提供了aName
或userName1
中包含“userName2
”的行。
如何过滤结果以仅显示OTHER条目?避免返回包含'aName'
答案 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