【问题标题】:MySQL: Trying to populate data into one column from another tableMySQL:尝试将数据填充到另一表的一列中
【发布时间】: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 语句时,我不知道如何使用此语法,或者这是否正确完全可以。

【问题讨论】:

    标签: mysql sql merge


    【解决方案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 ...)。
    猜你喜欢
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2015-03-19
    相关资源
    最近更新 更多