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

时间:2011-05-27 20:51:42

标签: mysql sql merge

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

我在表A中添加了EmployeeID。我现在想要使用名字和姓氏填充表A Employee ID中的表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语句时,我不知道如何使用这种语法,或者这是正确的方式。

2 个答案:

答案 0 :(得分:14)

听起来您已经在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)

答案 1 :(得分:1)

问题:首页和姓氏保证是唯一的吗?

此外,这需要更新。

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)