我正在尝试在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
谢谢
答案 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;