规范化 SQL - 根据来自另一个 table 的匹配字符串将列设置为主键标识符

Normalize SQL - Set column to primary key identifier based on matching string from another table

Table可视化

旧车

carId | color | etc    // Column Name
1     | red   | *
2     | blue  | *
3     | teal  | *
4     | red   | *

汽车颜色

colorId | color | etc  // Column Names
1       | blue  | *
2       | teal  | *
3       | red   | *

新车

carId | colorId | etc  // Column Names

我正在尝试规范化数据库。我想做的是从 oldCars 插入到 newCars 的每一行,但我不想只使用颜色名称,而是想使用 carColors 的主键 colorId table.

结果应该是这样的...

新车

carId | colorId | etc  // Column Names
1     | 3       | *
2     | 1       | *
3     | 2       | *
4     | 3       | *

这种说法看起来很琐碎,但我想不通

只是简单的JOIN以颜色名称作为拼接条件

INSERT INTO newCars
SELECT o.carID, c.colorID, o.etc
FROM oldCars AS o
JOIN carColors AS c ON c.color = o.color