MySQL如何将country表数值乘对应汇率生成新的数据表
完整可运行SQL语句
DROP TABLE IF EXISTS new_country; CREATE TABLE IF NOT EXISTS new_country AS SELECT c.`name`, ROUND(c.value001 * r.rate, 2) AS value1, ROUND(c.value002 * r.rate, 2) AS value2, ROUND(c.value003 * r.rate, 2) AS value3 FROM country c LEFT JOIN `exchange-rate` r ON c.`name` = r.`name`;
逻辑说明
- 直接使用MySQL原生支持的
CREATE TABLE ... AS SELECT语法,一步完成建表和计算结果写入,不需要拆分建表、插入两个步骤 - 关联用LEFT JOIN即可,关联条件为两张表的国家名称相等,可以保留
country表中所有国家的记录,如果只需要保留两边都匹配的记录,换成INNER JOIN即可 - 计算时加了
ROUND()保留2位小数,和原表的decimal精度匹配,不需要可以去掉 - 注意表名
exchange-rate包含特殊字符,必须用反引号包裹才能正常识别
执行后查询new_country表即可得到预期结果:
| name | value1 | value2 | value3 |
|---|---|---|---|
| Bulgaria | 190.00 | 380.00 | 570.00 |
| Portugal | 5.50 | 6.60 | 7.70 |
| Belarus | 200.00 | 300.00 | 400.00 |
内容的提问来源于stack exchange,提问作者Vityata
相关产品推荐
相关产品推荐

