我有两张这样的桌子:Table1 (ID, Kilometers, Depth)
Table2 (ID, Kilometers, Depth)
Sample Data:
Table 1
1, 0.001, 10
2, 0.002, 11
3, 0.003, 11
Table 2
1, 0.001, 10
2, 0.003, 12
3, 0.004, 15
我需要将表1中的深度替换为表2中的深度,根据其千米值。
但是,表2中可能没有表1中每个人的公里值。所以我需要得到最接近的值(以公里为单位)并在替换中使用它的深度。
我希望只有一个SQL语句可以实现这一点。
直接替换就是:
UPDATE T1, T2 SET T1.Depth = T2.Depth WHERE T1.Kilometers = T2.Kilometers
我有什么办法可以调整这个以获得最接近的值?
最佳答案
这很简单,而且可以满足您的需要:
UPDATE table1 SET depth = (
SELECT depth FROM table2
ORDER BY (ABS(table1.kilometers-table2.kilometers)) ASC
LIMIT 1
);
-- Query OK, 2 rows affected (0.00 sec)
mysql> select * from table1;
+----+------------+-------+
| id | kilometers | depth |
+----+------------+-------+
| 1 | 0.001 | 10 |
| 2 | 0.002 | 10 |
| 3 | 0.003 | 12 |
+----+------------+-------+
关于mysql - MySQL:将列的值替换为新表中最接近的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4895599/