Sql 在“From”和“To”字段中的值之间查找值,并更新表
我有两张桌子。一个人拥有一系列的范围Sql 在“From”和“To”字段中的值之间查找值,并更新表,sql,sql-server-2012,Sql,Sql Server 2012,我有两张桌子。一个人拥有一系列的范围 ID From To Score 1 0.00 17.00 A 2 17.00 22.50 B 3 22.50 24.50 C+ 4 24.50 26.50 C 5 26.50 31.50 C- 6 31.50 44.00 D 另一个表有一个总值和一个空的“分数”字段 BuildingID Totals Score 3065 22.10 NULL 3066
ID From To Score
1 0.00 17.00 A
2 17.00 22.50 B
3 22.50 24.50 C+
4 24.50 26.50 C
5 26.50 31.50 C-
6 31.50 44.00 D
另一个表有一个总值和一个空的“分数”字段
BuildingID Totals Score
3065 22.10 NULL
3066 22.00 NULL
3067 23.86 NULL
我一直在尝试使用更新查询来查询tbRange,以确定并填充tbValues.Score和tbRange.to之间的tbRange.Score,其中我的tbValues.Totals位于tbRange.From和tbRange.to之间,但我哪儿也找不到
在上面的示例3中,期望的结果将是“B”、“B”、“C+”
提前感谢尝试这样使用,如果有帮助,请告诉我
update aa
set aa.Score = a.Score
from tbRange as a
inner join tbValues as aa
on aa.Totals BETWEEN a.[From] AND a.[To]
编辑
我没有注意到有两个24.0版本,那么哪个级别将首先实施?
基本上,这个问题的解决方法是,我们可以设置Total是否为>=a.from,Total是否为 update aa
set aa.Score = a.Score
from tbRange as a
inner join tbValues as aa
on aa.Totals >= a.[From] AND aa.Totals < a.[To]
如果它能工作,那么它是如何工作的
在sql中,我们有一个BETWEEN运算符,可用于在范围之间进行特定的选择。尝试这样使用,如果有帮助,请告诉我
update aa
set aa.Score = a.Score
from tbRange as a
inner join tbValues as aa
on aa.Totals BETWEEN a.[From] AND a.[To]
编辑
我没有注意到有两个24.0版本,那么哪个级别将首先实施?
基本上,这个问题的解决方法是,我们可以设置Total是否为>=a.from,Total是否为 update aa
set aa.Score = a.Score
from tbRange as a
inner join tbValues as aa
on aa.Totals >= a.[From] AND aa.Totals < a.[To]
如果它能工作,那么它是如何工作的
在sql中,我们有一个BETWEEN运算符,可用于在范围之间进行特定选择。只需连接表。只需连接表。小心边界值,如17.00。两端都包含中间值。如果行范围低于总数,则只需跳过该范围即可。如果我错了,请纠正我,并给我参考。如果aa.总数为24.50,哪个分数需要更新?这不是决定性的。你可以通过改变>=的中间值来解决这个问题,是的,现在我明白了,有点困惑,但得到了大部分。这很有效,谢谢。From和To中相同值的问题实际上是我的一个错误,因为我限制了小数位数。我现在将它们增加到了4个位置,以便在From列中显示24.5001,在to列中显示24.5000。请注意边界值,如17.00。两端都包含中间值。如果行范围低于总数,则只需跳过该范围即可。如果我错了,请纠正我,并给我参考。如果aa.总数为24.50,哪个分数需要更新?这不是决定性的。你可以通过改变>=的中间值来解决这个问题,是的,现在我明白了,有点困惑,但得到了大部分。这很有效,谢谢。From和To中相同值的问题实际上是我的一个错误,因为我限制了小数位数。我现在将它们增加到4个位置,在From列中显示24.5001,在to列中显示24.5000。