mysql - 如何修复 MySQL 中这个简单的外键错误

标签 mysql foreign-keys

我该如何进行这个查询?关于一个简单的外键查询

这是我正在做的一个小项目

例如这些玩家:

玩家:

| PlayerId | name | team_TeamId |

| 1        | john | 1           |
| 2        | myke | 1           |
| 3        | carl | 2           |

这支球队:

团队:

| TeamId | name        |

| 1      | Arsenal     |
| 2      | Real Madrid |
SELECT player.name, team.name
FROM player, team
WHERE player.team_TeamId = 1

这个查询向我展示了这个:

| name | team.name   |

| john | Arsenal     |
| myke | Arsenal     |
| john | Real Madrid |
| myke | Real Madrid |

它“适用于”此查询(显然不是正确的形式):

SELECT *
FROM player, team
WHERE player.team_TeamId = 1 AND team.TeamId = 1
| name | team.name   |

| john | Arsenal     |
| myke | Real Madrid |

我预计只有 teamId = 1 的玩家,但实际输出是 teamId = 1 的玩家,但对所有团队重复。

最佳答案

我可能不知道正确答案。从我的角度来看,您尝试选择的方式没有任何关系。但是您可以通过在两个表中添加两个虚拟列来解决此问题。

select pt.name,tt.name from (SELECT player.*, @i:=@i+1  AS rowNum 
 FROM player , (SELECT @i:=0) AS temp
WHERE player.team_TeamId = 1) as pt LEFT JOIN
(SELECT team.*, @j:=@j+1  AS rowNum  from team  , (SELECT @j:=0) AS temp ) as tt  on 
pt.rowNum = tt.rowNum

关于mysql - 如何修复 MySQL 中这个简单的外键错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56522906/

相关文章:

mysql - 如果 FK 表具有复合主键(FK 不是复合的一部分),则外键作为主键不起作用

database-design - 数据库设计和外键 : Where should they be added in related tables?

php - 无法将图像保存在 phpMyAdmin 数据库中,获取 [BLOB - 0 B]

php - UPDATE 查询在 while 循环中不起作用

mysql - 在同一查询中使用查询结果?

MySQL:未强制执行外键约束

mysql - SQL建表主键和外键语法

mysql - 在外键列上插入问题

php - PHP MySQL 更新连接表中的简单 ORM

具有多个引用的mysql外键