如何将多个表中的电话号码插入mysql中的单个联系人表?

Posted

技术标签:

【中文标题】如何将多个表中的电话号码插入mysql中的单个联系人表?【英文标题】:How to insert phone numbers from multiple tables to single contact table in mysql? 【发布时间】:2022-01-23 21:14:29 【问题描述】:

当我有不同的表时,比如教师、学生...我想将这些电话号码插入到单个联系人表中。

    教师桌 学生桌 联系表

如何在没有外键冗余的情况下创建Contact表与那些表的关系?

【问题讨论】:

外键是存储数据关系的最少冗余方式。 【参考方案1】:

假设教师和学生之间没有重叠,您可以插入两个表的并集

INSERT INTO Contact (name, phone)
SELECT name, phone FROM Teacher
UNION ALL
SELECT name, phone FROM Student;

您可能还想在Contact 中创建一个新列来跟踪联系人的类型。在这种情况下,请使用以下内容:

INSERT INTO Contact (name, phone, type)
SELECT name, phone, 'teacher' FROM Teacher
UNION ALL
SELECT name, phone, 'student' FROM Student;

【讨论】:

如果一个老师和一个学生同名呢? 如何知道这个电话号码属于哪个学生或老师? 理想情况下,您应该有一个单人表,其中每个教师和学生都有一个唯一的主键。但是,我的回答的后半部分也解决了这个问题,除非两位老师(或两位学生)碰巧也有相同的名字。

以上是关于如何将多个表中的电话号码插入mysql中的单个联系人表?的主要内容,如果未能解决你的问题,请参考以下文章

在jdbc中的单个事务中将数据插入多个表中

将多个 CSV 文件加载到 MYSQL 中的单个表中 [重复]

mysql查询一次在单个查询中在多个表中插入记录

如何将购物车中的多个项目插入表格中?

在 C# 中有效地将数据插入 MySQL 中的多个表中

如何以编程方式修改通讯录中的联系电话?