mysql - 2个外键在MySQL中引用同一个主键

标签 mysql database primary-key mysql-workbench foreign-key-relationship

像这样:

表学生:

sID |姓名

1 -----苏珊

2 -----摩根

3 -----伊恩

4 -----詹姆斯

主键=sID

另一个表是这样的:

同 table friend

好友ID |人A |人B

1------------1------------3

2------------1------------2

3------------2------------3

4------------3------------4

其中主键是:friendsID, personA, personB

Foreign Key = personA, personB 都引用了 students 表中的 sID

我想要一种查询 friend 表的方式,通过 sID 将 personA 和 personB 列替换为名称。我试过自然连接,但它只有在有一个外键时才有效。

即我正在寻找这样的东西:

好友ID |人A |人B

1------------苏珊------------伊恩

2------------苏珊------------摩根

3------------摩根------------伊恩

4------------伊恩------------詹姆斯

如果我只有 personB 作为列而没有 personB,自然连接就可以工作。出于某种原因,当我这样做时,自然连接是巨大的: select*from friends NATURAL JOIN 学生;

请帮忙。谢谢

最佳答案

您需要使用两个连接来完成此操作。

例如:

select f.friendsID, 
  s1.name as personA_name, 
  s2.name as personB_name
from friends f
  inner join student s1 on s1.sID = f.personA
  inner join student s2 on s2.sID = f.personB

关于mysql - 2个外键在MySQL中引用同一个主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26618381/

相关文章:

database - 向用户公开代理键

mysql - 如何更新 MySQL 中的主键?

MySQL:删除主键会删除唯一约束和/或索引吗?

dataframe - 根据共享值将一列从一个数据帧添加到另一个数据帧

PHP备份整个PostgreSQL数据库,然后恢复部分表

php - 如何缓存个性化新闻提要以最小化数据库读取查询?

php - 使用 if 条件更新表 - PHP - MySQL

php - Mysql Server 运行但 Laravel 项目中的 Artisan 不这么认为

mysql - 在 MySQL Workbench 中删除 MySQL LocalHost 服务器

php - 将数组保存到 MySQL 字段