mysql - 使用连接从 MySQL 数据库中选择 2 列

标签 mysql sql

我有以下表格:

团队

+------+--------------+--------------+
| id   |  team_name   |  team_code   |
+------+--------------+--------------+
|  1   |  Wales       | WAL          |
|  2   |  England     | ENG          |
|  3   |  New Zealand | NZL          |
+------+--------------+--------------+

匹配

+------+-----------+-----------+
| id   |  team_a   |  team_b   |
+------+-----------+-----------+
|  1   |  WAL      | ENG       |
|  2   |  ENG      | NZL       |
|  3   |  WAL      | NZL       |
+------+-----------+-----------+

我知道连接是如何工作的,但我不知道如何通过 Matched.id 查询数据库以从 中获取两个团队的团队名称团队 数据库。让我更好地解释

  • 我需要为每场比赛确定球队名称
  • 我将通过Matches.id进行查询
  • 所以对于比赛:1 我需要选择“威尔士”和“英格兰”

希望我已经足够清楚地解释了我的问题,但如果还没有,请随时提出更多问题

最佳答案

数据库结构对我来说似乎“不对劲”。

您应该将team_ateam_b 作为Teams 表主键的外键

然后您可以加入 ID(两次)以获得全名。

匹配:

+------+-----------+-----------+
| id   |  team_a   |  team_b   |
+------+-----------+-----------+
|  1   |  1        | 2         |
|  2   |  2        | 3         |
|  3   |  1        | 3         |
+------+-----------+-----------+

SELECT T1.team_name, T2.team_name
FROM Matches M
  INNER JOIN Teams T1
    ON M.team_a = T1.id
  INNER JOIN Teams T2
    ON M.team_b = T2.id
WHERE M.id = 1

关于mysql - 使用连接从 MySQL 数据库中选择 2 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12483913/

相关文章:

MySQL查询: Counting "Date" records in a table,,其中 "Date"小于当前记录

mysql - Hibernate - 在表的所有列中搜索文本

python - 将排名和分区查询转换为 SqlAlchemy

mysql - 创建外键的步骤错误,在 FK 表中返回零行

sql - 带有 last_insert_id() 的 Mysql 多行插入选择语句

mysql - TiDB 的 set[sync-log=false] 有什么区别和影响

php - 用来自 sql 结果的 php 回显第 30 行?

php - 在 Yii 中验证相关模型的属性

mysql - 显示多对多关系结果并按相同 ID 对它们进行分组

SQL GROUP BY 1 2 3 和 SQL 执行顺序