MySQL:用新表中最接近的值替换列的值
我有两个表,如下所示:
Table1(ID、公里、深度)
Table2(ID、公里、深度)
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 中的深度。
但是,对于表 1 中的每个人,表 2 中可能没有公里值。因此,我需要获取最接近的值(以公里为单位)并在替换中使用其深度。
我希望用一条 SQL 语句来实现这一点。 只是直接替换就像:
UPDATE T1, T2 SET T1.Depth = T2.Depth WHERE T1.Kilometers = T2.Kilometers
我可以通过什么方法来调整它以获得最接近的值?
I have two tables like so:
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
I need to replace the depth in table 1 with the depth in table 2 according to its Kilometers value.
However, there may not be a kilometers value in table2 for everyone in table 1. So i need to get the closest value (by kilometer) and use its depth in the replace.
I was hoping for a single SQL statement to acheive this.
Just a straight replace would be like:
UPDATE T1, T2 SET T1.Depth = T2.Depth WHERE T1.Kilometers = T2.Kilometers
Any way i can adapt this to get the closest value?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这很简单并且可以满足您的要求:
This is simple and does what you want:
注意:
tbl1
和tbl2
是两个表名称。X
是为子查询指定的别名,用于确定每个tbl1.id
最接近的匹配项。tbl2id
是 tbl2 中最接近每个tbl1.id
的id
,在子查询中使用别名。Note:
tbl1
andtbl2
are the two table names.X
is an alias given to the subquery that determines the closest match pertbl1.id
.tbl2id
is theid
from tbl2 that is closest to eachtbl1.id
, aliased in the subquery.