循环使用SQL语句

时间:2014-09-03 13:59:44

标签: sql

我正在尝试在SQL中实现一个小逻辑:

例如:我有两张表A和B

    A            B
ID  Qnt         ID  Qnt   Value
1    50         1   100   1000      
2   130         2   200   1000
3   180         3   300   1000
4   320         4   400   2000
5   500         5   500   2000
                6   600   2000
                7   700   2000

我想循环遍历表A中 Qnt的每个值并检查该值是否位于表B的Qnt 中的值范围之间并获取相应的值值。

我知道如何使用While循环实现这一目标。但我不想这样做,因为循环会显着影响我的查询性能。我想只用SQL语句来做这件事。 任何人都可以提出一个想法,我怎么能用这个?只是一个想法会很棒!任何sql都没问题,我只想知道逻辑。

输出如下:

Output
ID      Qnt     Value
1       50      1000
2       130     1000
3       180     1000
4       320     2000
5       500     2000

谢谢

1 个答案:

答案 0 :(得分:6)

这是一个查找。您可以使用相关子查询来执行此操作,尽管两个数据库中的语法略有不同。这是MySQL版本:

select a.*,
       (select b.value
        from b
        where b.qnt <= a.qnt
        order by b.qnt desc
        limit 1
       ) as value
from a;

这是SQL Server版本:

select a.*,
       (select top 1 b.value
        from b
        where b.qnt <= a.qnt
        order by b.qnt desc
       ) as value
from a;