MySQL:尝试将数据填充到另一表的一列中
Posted
技术标签:
【中文标题】MySQL:尝试将数据填充到另一表的一列中【英文标题】:MySQL: Trying to populate data into one column from another table 【发布时间】:2011-09-03 16:40:30 【问题描述】:表 A 有几列,包括 FirstName
和 LastName
表B有不同的列,包括FirstName
、LastName
和EmployeeID
我将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:尝试将数据填充到另一表的一列中的主要内容,如果未能解决你的问题,请参考以下文章
vlookup函数基本使用--如何将两个Excel表中的数据匹配;excel表中vlookup函数使用方法将一表引到另一表