规范化 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
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