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。