MySQL:如何根据从另一个表中选择的值来填充现有表的新列

时间:2013-11-25 20:56:33

标签: mysql sql

我对SQL trully的了解不是很好,无法执行我想要的。 我有2张桌子: 一个是包含许多列的长数据表,其中一个是TypeName,最近我在表TypeID中添加了新列(它是空的atm)。像:

column1   column2   column3   TypeName    TypeID
------------------------------------------------
...       ...       ...       name1         NULL
...       ...       ...       name2         NULL
...       ...       ...       name1         NULL
...       ...       ...       name3         NULL
...       ...       ...       name1         NULL
...       ...       ...       name4         NULL
...       ...       ...       name5         NULL

第二个表我称之为referenceTable。它将每个可能的TypeName映射到TypeID。像:

TypeID     TypeName
-------------------
0          name1
1          name2
2          name3
etc...

我想在refference表中的基于数据表的对应值中填充TypeID。 对此有什么疑问?

编辑: 是的,我在使用正确的值填充TypeName列后,要从数据表中删除TypeID。 当然,我正在寻找同时为整个表格执行此操作的查询。

1 个答案:

答案 0 :(得分:9)

您想要更新而不是INSERT:

UPDATE table1 t1
INNER JOIN table2 t2 ON t1.typeName = t2.typename
SET t1.typeID = t2.typeID

但是如果你要在两个表上都有重复值,你真的应该考虑只有一个外键(可能是这个类型ID),并且只在引用表中有名称。