SQL中两个表的交集
Posted
技术标签:
【中文标题】SQL中两个表的交集【英文标题】:Intersection of Two Tables in SQL 【发布时间】:2019-04-09 13:28:15 【问题描述】:基本上我需要创建一个使用其他两个表的特定信息的新表。
例如,我有一个名为 person 的表,其中包含元素 person_id、first_name、last_name、gender、age 和 fav_quote。我有第二个表,名为部门,其中包含元素 dept_id、dept_name 和 building。我现在需要创建包含 person_id 和 dept_id 元素的交集表。并且两者都必须是主键(我假设这只是在我的源代码中表示 PRIMARY KEY (person_id, dept_id) 命令)。
创建表人(
person_id INT(8) NOT NULL auto_increment,
first_name VARCHAR(25) NOT NULL,
last_name VARCHAR(25) NOT NULL,
性别 VARCHAR(1),
年龄 INT(8),
fav_quote 文本,
主键(person_id)
);
创建表部门(
dept_id INT(8) NOT NULL auto_increment,
部门名称 VARCHAR(25) 非空,
构建 VARCHAR(25) NOT NULL,
主键(dept_id)
);
这是我最初的两个表的代码,我只是不确定如何创建一个交集,并且在回顾我的笔记后,我找不到关于如何编写它的说明。
【问题讨论】:
嗨。在您在查询介绍中看到的众多示例查询中,您想要什么?此外,“交叉点”在这里没有任何意义。使用足够的单词和句子来真正说出你的意思。例如,在表、行、行中的列的值等方面。如果你不强迫自己说出你的意思,你怎么能期望推理和交流重新查询?如果您清楚地表达了您的问题/目标/问题,您可以通过谷歌搜索找到答案。 (在这里,对于这个明显的基本常见问题解答,但也是一般性的)。 这是我必须继续执行的所有指令,使用我已经说过的确切语言“交叉表”。我已经用许多不同的术语搜索了它。这是一个我需要做的学校项目,我不仅回顾了自己的课程和以前的工作,而且还咨询了各种解释性网站。如果您不清楚,我深表歉意,但这正是我所面临的斗争。 你不想要“两个表的交集”,因为你的标题错误地说;你想要“一个交集表”。再说一次,你见过什么例子?这对你没有帮助吗? 【参考方案1】:您需要一个包含 2 个字段的表格; person_id 和 dept_id。该表将具有两个表个人和部门主键的外键以及两者的复合主键。
此外,仅当人员与部门之间存在一对多关系时,才需要此表。否则只需亲自添加 dept_id 作为外键。
【讨论】:
【参考方案2】:你得到了正确的主键部分。我会将外键添加到您现有的表中,以防止与不存在的人员或部门进行交互:
CREATE TABLE person_department
person_id INT(8) NOT NULL,
dept_id INT(8) NOT NULL,
PRIMARY KEY(person_id, dept_id),
FOREIGN KEY(person_id) REFERENCES person(person_id),
FOREIGN KEY(dept_id) REFERENCES department(dept_id)
)
【讨论】:
谢谢,这很有帮助!以上是关于SQL中两个表的交集的主要内容,如果未能解决你的问题,请参考以下文章
mysql中有2个结构一样的表,我想把两个表的交集存到另一个表中,请问怎么操作呢?