2011-04-30 92 views
0

MySQL noob here;首先环顾四周,但找不到这个问题的答案。MySQL - 如何从一个表中插入值到另一个字符串匹配?

所以不得不在MySQL,酮(表1),其由包含名称的唯一列表(Col1中)和另一种含有对应的二进制值(col2的)一列的两个表。第二个表(表2)含有具有空柱等待被填充有来自所述第一表的二进制值的重复名称的列表。我想要做的是,对于Table2中重复名称的每个实例,从Col2中插入与Table1中匹配的唯一名称关联的二进制值。

我知道如何在做到这一点的Excel你只是把旁边包含重复名称的每一行以下VLOOKUP声明。在下面的代码片段A2是一个经常性的名字,唯一的名称都包含在列B和二进制值包含在列C.

=VLOOKUP(A2,$B$2:$C$106095,2,FALSE) 

但我不能为我的生活弄清楚如何在MySQL中重现这种效果。由于数据太多,我无法使用Excel。有人有主意吗?提前致谢!

+0

如果您告诉我们确切的表结构会更容易。 – 2011-04-30 06:49:56

回答

1

我想你想是这样的(我不知道Excel的声明做什么):

UPDATE table2 JOIN table1 ON table1.col1 = table2.col1 
SET table2.col2 = table2.col2 
WHERE table2.col2 IS NULL 

这将更新有col2空,搜索在table1相应的行每行table2根据匹配col1列。

顺便说一句,你有这个理由吗?为什么不在选择数据时加入两个表?例如:

SELECT table2.col1, table1.col2 
FROM table2 JOIN table1 ON table1.col1 = table2.col1 
+0

谢谢你!第二个命令工作 - 第一个命令没有任何返回。现在,看到它需要多长时间来对> 100K记录... – darkfaculties 2011-04-30 07:53:49

+1

@darkfaculties执行:放置在处于加入大量数据的处理时,通常会加快进程,大大使用的列的索引。不是100K记录是“大”。 – Tim 2011-04-30 09:23:51

+0

第一个是不应该返回任何东西,它只是更新第二个表。我想这是一个术语误解。 :) – 2011-04-30 10:07:31

相关问题