MySQL: How to fill new column of existing table with value based on select from another table
我对SQL trully的了解不是很好,无法执行我想要的。
我有2张桌子:
一个是包含许多列的长数据表,其中一个是TypeName,最近我在表TypeID中添加了新列(它是空的atm)。 喜欢:
1 2 3 4 5 6 7 8 9
| column1 column2 column3 TypeName TypeID
------------------------------------------------
... ... ... name1 NULL
... ... ... name2 NULL
... ... ... name1 NULL
... ... ... name3 NULL
... ... ... name1 NULL
... ... ... name4 NULL
... ... ... name5 NULL |
第二个表我称之为referenceTable。 它将每个可能的TypeName映射到TypeID。 喜欢:
1 2 3 4 5 6
| TypeID TypeName
-------------------
0 name1
1 name2
2 name3
etc... |
我想在refference表中的基于数据表的对应值中填充TypeID。
对此有什么疑问?
编辑:
是的我想用正确的值填充TypeID列后从数据表中删除TypeName。
当然,我正在寻找同时为整个表执行此操作的查询。
-
请告诉我们您的尝试。
-
你有没有试过UPDATE ... SELECT ...或者阅读其他帖子stackoverflow.com/questions/1262786/…?
-
我只是试图提出UPDATE ... SELECT ...查询但我的知识确实只允许我单行。 但是如何为整张桌子做这样的事情我不知道。 BTW不确定我的UPDATE ... SELECT ... thingy首先是核心。
你想更新不插入:
但是如果你要在两个表上都有重复的值,你真的应该考虑只有一个外键(可能是这个类型ID),并且只在引用表中有名称。
-
我的意图是在使用正确的值填充TypeID后从数据表中删除TypeName。 如果是这样,我可以进行您建议的查询吗?
-
是的,但请确保先执行查询并在之后将其删除。
-
谢谢! 做完了。
-
上面的那个在sql server中不起作用。 所以我最终得到了类似下面的东西。 以防有人需要。UPDATE t1 SET t1.Column = t2.SomeColumn FROM tableToUpdate t1, table2 t2 WHERE t2.Id = t1.SomeId