mysql - 跨两列相等的表复制值
问题描述
我正在使用 MySQL 并且有两个表。以下是描述和每行的前 3 行:
mysql> 描述 table_1;
+------------+--------------+------+-----+-------- -+----------------+
| 领域 | 类型 | 空 | 钥匙 | 默认 | 额外 |
+------------+--------------+------+-----+-------- -+----------------+
| main_id | 整数 | 否 | 优先级 | 空 | 自动增量 |
| 地理| varchar(30) | 是的 | | 空 | |
| 表名 | varchar(40) | 是的 | | 空 | |
| table_id | 整数 | 是的 | | 空 | |
+------------+--------------+------+-----+-------- -+----------------+
mysql> 描述 table_2;
+-------------+-------------+------+-----+------ --+----------------+
| 领域 | 类型 | 空 | 钥匙 | 默认 | 额外 |
+-------------+-------------+------+-----+------ --+----------------+
| table_2_id | 整数 | 否 | 优先级 | 空 | 自动增量 |
| 数据ID | 整数 | 是的 | | 空 | |
| 地理| varchar(30) | 是的 | | 空 | |
| 源文本 | varchar(200) | 是的 | | 空 | |
mysql> select * from table_1 LIMIT 3;
+------------+---------------+------------+------- ---+
| main_id | 地理| 表名 | table_id |
+------------+---------------+------------+------- ---+
| 1 | 美国| fr1_table | 4 |
| 2 | 阿拉巴马| fr1_table | 5 |
| 3 | 阿拉斯加 | fr1_table | 7 |
+------------+---------------+------------+------- ---+
mysql> select * from table_2 LIMIT 3;
+------------+---------------+------------+------- ------+
| table_2_id | 数据ID | 地理| 源文本 |
+------------+---------------+------------+------- ------+
| 1 | 4 | NULL |'示例文本 1' |
| 2 | 5 | NULL |'示例文本 2' |
| 3 | 7 | NULL |'示例文本 3' |
+------------+---------------+------------+------- ------+
我正在尝试将 table_1.geography 值插入 table_2.geography,其中 table_1.table_id = table_2.data_id。
结果将是
mysql> select * from table_2 LIMIT 3;
+------------+---------------+--------------+------ ----------+
| table_2_id | 数据ID | 地理| 源文本 |
+------------+---------------+--------------+------ ----------+
| 1 | 4 | 美国 |'示例文本 1' |
| 2 | 5 | 阿拉巴马州 |'示例文本 2' |
| 3 | 7 | 阿拉斯加 |'示例文本 3' |
+------------+---------------+------------+------- ----------+
有数百行,因此手动操作不是可行的解决方案。
谢谢您的帮助。
解决方案
您加入两个表并更新第二个表
UPDATE table_2 t2
LEFT JOIN table_1 t1 ON t2.data_id = t1-table_id
SET t2.geography = t1.geography