MySQL自引用ID并选择

MySQL自引用ID并选择,mysql,Mysql,我在这里有一个MySQL表Starcraft2Bracks: (重新编辑,以便我可以再次编辑,对不起,第一个编辑) uId=>对用户的引用 id=>索引 对手=>此表中对id的引用,-2被视为“再见” 我想做的是,提出一个sql语句,它将根据行的uId选择用户名,以及选择对手的用户名。到目前为止,我提出的最有建设性的建议是 SELECT u1.username, if(sc2a.opponent = -2, "Bye", u2.username) as username FROM Starcra

我在这里有一个MySQL表Starcraft2Bracks:

(重新编辑,以便我可以再次编辑,对不起,第一个编辑)

uId=>对用户的引用

id=>索引

对手=>此表中对id的引用,-2被视为“再见”

我想做的是,提出一个sql语句,它将根据行的uId选择用户名,以及选择对手的用户名。到目前为止,我提出的最有建设性的建议是

SELECT u1.username, if(sc2a.opponent = -2, "Bye", u2.username) as username
FROM Starcraft2brackets AS sc2a
LEFT JOIN users AS u1 ON u1.id = sc2a.uId
LEFT JOIN Starcraft2brackets AS sc2b ON sc2a.opponent = sc2b.id
LEFT JOIN users AS u2 ON sc2b.uId = u2.id
这确实给了我正确的用户名,但是它给了重复的条目,就像这样

选择u1.username,如果(sc2a.opporter=-2,“再见”,u2.username)作为用户名
来自Starcraft2Brakets作为sc2a
以u1.id=sc2a.uId上的u1身份左键加入用户
左键将Starcraft2球拍作为sc2a上的sc2b加入。对手=sc2b.id
在sc2b.uId=u2.id上以u2身份左键加入用户
其中u1.username
这给了我我想要的结果集。感谢stackoverflow.com的帮助。

尝试以下方法:

SELECT u1.username, if(u1.oppponent = -2, "Bye", u2.username) as username
FROM users AS u1
left join users AS u2 on u1.opponent = u2.id
join Starcraft2brackets AS sc2a on u1.id = sc2a.uId
where u1.uid = ?;
SELECT u1.username, if(u1.oppponent = -2, "Bye", u2.username) as username
FROM users AS u1
left join users AS u2 on u1.opponent = u2.id
join Starcraft2brackets AS sc2a on u1.id = sc2a.uId
where u1.uid = ?;