Mysql 如何从一列或另一列中进行选择?

Mysql 如何从一列或另一列中进行选择?,mysql,Mysql,假设我有一张包含朋友及其友谊状态的桌子(0-拒绝,1-接受) 我如何选择chris的所有朋友来获得这样的输出 john bob mike 使用完全外部联接 SELECT column-name-list FROM table-name1 FULL OUTER JOIN table-name2 ON table-name1.column-name = table-name2.column-name; 您可以使用CASE表达式进行此操作,例如: select case when userA

假设我有一张包含朋友及其友谊状态的桌子(0-拒绝,1-接受)

我如何选择chris的所有朋友来获得这样的输出

john
bob
mike

使用完全外部联接

SELECT column-name-list FROM table-name1 
FULL OUTER JOIN table-name2 
ON table-name1.column-name = table-name2.column-name;

您可以使用
CASE
表达式进行此操作,例如:

select 
case when userA = 'chris' then userB when userB = 'chris' then userA end as friend_name
from  your_table
where 
(userA = 'chris' or userB = 'chris') and status = 1

你可能会说这是多余的,但我会将表视为a->B的单向关系。因此,如果有一个chris->bob,那么chris与bob是朋友;但是你需要一个bob->chris,bob才能与chris成为朋友。想象一下它是如何在一些游戏机上工作的。除此之外,您还必须将表本身加入。如果拒绝,您如何处理以下内容:john->chris(0)和chris->john(1)?这是否意味着一个用户接受/请求与另一个用户建立友谊,而另一个用户拒绝了?我不想偏离你最初的问题太远,但是单独一列如何,它只包含所有已建立“友谊”(双向“接受”)的朋友的用户id(用分隔符分隔)。这将减少推断用户之间友谊所需的行数。同样,存储“拒绝”也是有目的的吗?带分隔符的列几乎从来都不是应该使用的(它是非规范化的),在这里它会出现与以前相同的问题。如果分隔列A具有id B,但分隔列B没有id A,该怎么办?同样的问题。
select 
case when userA = 'chris' then userB when userB = 'chris' then userA end as friend_name
from  your_table
where 
(userA = 'chris' or userB = 'chris') and status = 1