我对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
。
当然,我正在寻找同时为整个表格执行此操作的查询。
答案 0 :(得分:9)
您想要更新而不是INSERT:
UPDATE table1 t1
INNER JOIN table2 t2 ON t1.typeName = t2.typename
SET t1.typeID = t2.typeID
但是如果你要在两个表上都有重复值,你真的应该考虑只有一个外键(可能是这个类型ID),并且只在引用表中有名称。