表格可视化
旧车
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
中,但我不想只使用颜色名称,而是使用主键 colorId
来自 carColors
表。
结果看起来像这样...
新车
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
关于mysql - 规范化 SQL - 根据另一个表中的匹配字符串将列设置为主键标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35281959/