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,实际上这是一个输入错误,不幸的是无法解决问题。然而,下面删除的答案确实如此+不过,我还是要感谢你帮我发现了打字错误——谢谢。