MySQL:尝试将数据填充到另一表的一列中

Posted

技术标签:

【中文标题】MySQL:尝试将数据填充到另一表的一列中【英文标题】:MySQL: Trying to populate data into one column from another table 【发布时间】:2011-09-03 16:40:30 【问题描述】:

表 A 有几列,包括 FirstNameLastName 表B有不同的列,包括FirstNameLastNameEmployeeID

我将EmployeeID 添加到表 A 中。我现在想使用名字和姓氏从表 B 的 Employee ID 中填充表 A 的 Employee ID(我们目前没有使用相同名称的人) - 这张桌子的设计很奇怪)

我尝试了一些事情,但我一直在尝试

INSERT INTO TableA (EMPLOYEE_ID) A
SELECT B.EMPLOYEE_ID FROM TableB B
WHERE A.First_name = B.First_name
AND A.Last_name = B.Last_name

但我不断收到语法错误 - mysql 服务器版本,以便在 A 附近使用正确的语法。我认为,在处理 Insert 语句时,我不知道如何使用此语法,或者这是否正确完全可以。

【问题讨论】:

【参考方案1】:

听起来您已经在 TableA 中有要更新的数据。如果是这种情况,您需要使用UPDATE 语句。这是一个例子:

UPDATE TableA A
SET EMPLOYEE_ID =
  (SELECT EMPLOYEE_ID
   FROM TableB B
   WHERE B.First_name = A.First_name
   AND B.Last_name = A.Last_name)
WHERE EXISTS
  (SELECT EMPLOYEE_ID
   FROM TableB B
   WHERE B.First_name = A.First_name
   AND B.Last_name = A.Last_name)

【讨论】:

完美运行,谢谢。我对我的 SQL 技能非常生疏,所以我完全忘记了更新 我收到这样的错误:子查询返回超过 1 行。任何建议。 这里使用它的真棒方式来更新多条记录。【参考方案2】:

问题:名字和姓氏是否保证是唯一的?

另外,这需要更新。

UPDATE TableA A
SET a.employee_id = (SELECT employee_id FROM TableB WHERE first_name = a.first_name AND last_name = a.last_name)
WHERE EXISTS (SELECT 1 FROM TableB WHERE first_name = a.first_name AND last_name = a.last_name)

【讨论】:

他们是。目前公司只有 20 人,所以在我们开始增长之前,我需要先解决这个问题。我不知道为什么有人认为不包含员工姓名的键是个好主意 为什么我们必须更新零件?第一部分是向前(Select ..),第二部分是 WHERE EXISTS(Select)?是否只能使用 WHERE EXISTS?这意味着:UPDATE TAbleA A SET a.employee_id WHERE EXISTS (SELECT ...)。

以上是关于MySQL:尝试将数据填充到另一表的一列中的主要内容,如果未能解决你的问题,请参考以下文章

基于从源表的一列向目标表插入多列的查询优化

python 将NA填充到另一列中

从不同表的另一列中的一列中查找所有值

SQL - 将数据从同一表中的一列复制到另一列

根据另一列中的行自动填充第二列中的数据

vlookup函数基本使用--如何将两个Excel表中的数据匹配;excel表中vlookup函数使用方法将一表引到另一表