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

标签 mysql sql

<分区>

我对 SQL 的了解确实不足以执行我想要的操作。 我有 2 个表: 一个是有很多列的长数据表,其中一个是 TypeName,最近我在 TypeID 表中添加了新列(它是空的 atm)。喜欢:

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

我将第二张表称为引用表。它具有每个可能的 TypeName 到 TypeID 的映射。喜欢:

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

我想根据引用表中的相应值在数据表中填充 TypeID。 对此的查询是什么?

编辑: 是的,在用正确的值填充 TypeID 列后,我想从数据表中删除 TypeName。 当然,我正在寻找一次对整个表执行此操作的查询。

最佳答案

您想更新而不是插入:

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

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

关于MySQL:如何根据从另一个表中选择的值填充现有表的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20203136/

相关文章:

mysql - 有什么好的关系数据库教程吗?

javascript - PHP的PHP删除确认

mysql - 在 MySQL 中计算每天的平均销售额

c# - 在来自同一 MySQL 服务器的不同数据库的两个表中执行连接查询

mysql - SQL 从 2 个表中选择并按月分组

php - 在循环中将 POST 值分配给数组并将数组放入数据库

mysql - 自连接的 SQL 查询

sql - 使用 Oracle 表类型执行动态 native SQL 会出现无效标识符错误

sql - 创建一个带有序列/自动增量列的临时表

php - 如何从 MySQL 和 PHP 获取数组字符串