MySQL-在同一个表上连接?

MySQL-在同一个表上连接?,mysql,database,join,subquery,left-join,Mysql,Database,Join,Subquery,Left Join,我正在尝试实现,它展示了如何使用表别名有效地连接到运行查询的同一个表 考虑以下(简化)足球队表格: ----------------------------------------------------- | id | name | next_fixture_against | url_token | ===================================================== | 1 | Hull City | 2

我正在尝试实现,它展示了如何使用表别名有效地连接到运行查询的同一个表

考虑以下(简化)足球队表格:

-----------------------------------------------------
| id | name      | next_fixture_against | url_token |
=====================================================
| 1  | Hull City | 2                    | hull      |
-----------------------------------------------------
| 2  | Everton   | 1                    | everton   |
-----------------------------------------------------
我试图编写一个查询,获取给定球队及其下一个对手的名字

方法1:左连接

下面是我通过修改上述答案得出的结论:

SELECT main_team.name, opposition_team.name as against
FROM teams AS main_team
LEFT JOIN teams AS opposition_team
ON main_team.name = opposition_team.next_fixture_against
WHERE main_team.url_token = 'hull'
这将产生:

-----------------------
| name      | against |
=======================
| Hull City | NULL    |
-----------------------
如果我删除
WHERE
子句,它确实有效,但奇怪的是,它的出现顺序与我预期的相反,即

-----------------------
| name    | against   |
=======================
| Everton | Hull City |
-----------------------
而不是名字=赫尔城,对手=埃弗顿

(这纯粹是一个关注点——显然我需要
where
子句,因为我针对的是一个特定的团队,而不是所有的团队。)

方法2:子查询

我提出了以下替代方法:

SELECT
    name,
    (SELECT name FROM teams WHERE id = ???) AS against
FROM
    teams
WHERE
    url_token = 'hull'
…但我不确定用什么替换
,以使内部子查询引用外部子查询


谁能给我指出正确的方向吗?提前感谢。

您需要主队的
。id=对手队。下一场比赛对阵
。您试图在联接中使用团队名称而不是id


别担心,我们都这样做了。

您只是在切换这两个:
main\u team.name=反对派\u team.next\u fixture\u对抗
->
main\u team.next\u fixture\u对抗=反对派\u team.id
Agh,实际上这是一个输入错误,不幸的是无法解决问题。然而,下面删除的答案确实如此+不过,我还是要感谢你帮我发现了打字错误——谢谢。