当前位置: 首页 > 知识库问答 >
问题:

MySQL - 插入 - 选择具有外键关系的多行

惠志
2023-03-14

我在MySQL中有下表。

  • 表1(身份证、名字、姓氏、电话号码)
  • 表2(TID、电子邮件)

我在 Table1 中有 25000 行,而我的 Table2 包含 20000 行。我在表 2 中的 TID 是引用表 1 的主键 ID 的外键。如果姓氏为 NULL,则 Table2 中将不存在这些 ID。现在,我正在尝试仅针对具有姓氏的表合并这两个表。

我重新定义了表2的模式,如下所示。

  • Table2(TID、TEmail、TFirstName、TLastName)

现在,我尝试了以下查询将名字和姓氏值插入到表 2 中。

insert into Table2 (TFirstName, TLastName) select FirstName,LastName from Table1 where ID = Table2.TID

但是,上面的查询给了我一个错误。我可以使用游标/存储过程。但如果可能的话,希望通过查询本身实现。

共有1个答案

丁宏盛
2023-03-14

我认为您想在这里做的是更新而不是插入查询。INSERT 用于创建其他行,而 UPDATE 用于更改值。

UPDATE Table2 JOIN Table1
ON Table2.TID = Table1.ID
SET Table2.TFirstName = Table1.FirstName,
SET Table2.TLastName = Table1.LastName;
 类似资料:
  • 问题内容: 好的。简而言之,我正在尝试执行INSERT SELECT,例如: 当然,@key不会从每个插入中返回每个后续的LAST_INSERT_ID(),而是仅从最后一个插入返回ID。 基本上,我将旧的USER表拆分为ENTITY和USER,例如: 我为什么要这样做?基本上,我有一个“商店”实体,它将具有“用户”公用的字段,例如地址和电话号码。因此,任何“ ENTITY”都可能没有多个地址(送货

  • 我创建了两个表: > 具有列 (主键、自动递增)、、、的表 表包含列(主键,自动增量),(的外键), 我有表格来创建具有现有角色的新员工。要插入的数据示例: 我想在SQL Server 2014中编写一个存储过程,将新的staff插入到<code>tblStaff。 那我该怎么办? 如果我的问题与其他问题重复,我很抱歉。我对SQL更感兴趣。谢谢你的帮助。

  • 我需要支持一个涉及以下实体的场景(使用JPA): 用户 一个用户可以有多个帐户,一个帐户可以在多个用户之间共享,这是迄今为止的标准@ManyToMany关系。 一个用户可以为每个帐户拥有一组不同的角色,一个角色可以在多个用户之间共享。 我遵循了这个实践,它解释了一种用额外列映射多对多关联的方法,但我不确定我是否得到了它。 用户实体: 账户实体: 用户帐户实体: 用户帐号: 我正在创建一个新用户并尝

  • 问题内容: 我想知道是否可以运行这样的请求: 这个想法是用t1的一些数据填充t2,但是我在语法上一定是错误的。 谢谢你的帮助 问题答案: 从语句插入时不使用关键字。

  • 问题内容: 有没有办法插入预设值和我从选择查询中获得的值?例如: 我有“字符串”的值和数字5,但是我必须从这样的选择中找到[int]值: 那给我那个ID放在table1里面。 如何将其合并为一个语句? 问题答案: 使用查询,并将已知值放入:

  • 问题内容: 我有本身具有外键的表。列 parentid 是外键, 不能 为NULL。 如果我这样做,那么它说不能将NULL插入 父母的父母 。但是,如果还没有插入行,我可以为它设置什么值呢? 我如何编写将向该表添加行的脚本? 谢谢 问题答案: 技巧:拥有一个带有虚拟密钥的虚拟行,例如99999。将其插入为FK,然后将FK更改为其实际值。并在交易中完成。