2014-09-03 220 views
0

我想在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 

我想通過在QNT的每個值環表A並檢查該值是否在表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

你使用MySQL?還是SQL Server?它們不是同一件事。 – 2014-09-03 14:00:15

+0

那麼,我不需要腳本。基本上我只需要關於如何用SQL語句解決這個問題的邏輯。任何事情都可以被忽略。 – 2014-09-03 14:01:16

+1

這可能因供應商而異。由於您正在尋找通用解決方案,因此我將刪除特定標籤。 – 2014-09-03 14:02:04

回答

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;