2014-02-21 47 views
-1

我的表格如下。如何根據優先級獲取特定值

表值

ID  Values 
---- ------ 
A1 ---- 3 
A2 ---- 3 
A3 ---- 3 
A4 ---- 3 
A5 ---- 5 
A6 ---- 6 
A7 ---- 6 

表優先

ID ------ Priority 
A3 ----- 1 
A2 ----- 2 
A1 ----- 3 
A5 ----- 4 
A6 ----- 5 
A4 ----- 6 
A7 ----- 7 

我想找到基於優先級的值中的最低值2 ID小於5 如果一個或多個ID具有相同值然後使用優先級表中的優先級並從中得到最高的2個值。 對於上述情況,A1,A2,A3和A4具有相同的值並且小於5.然後,它應該遵循優先級表中給出的優先級並獲取最前面的2條記錄。針對上述案例,應該顯示

ID ---- Values 
A3 ---- 3 
A2 ---- 3 

回答

0
SELECT TOP 2 tv.ID, tv.Values 
FROM table_values tv 
INNER JOIN table_priorities tp 
ON tv.Id = ip.ID 
WHERE tv.values < 5 
ORDER BY tv.values, tp.priority 
0

您可以通過加入表一起,過濾第一個表的標準上value做到這一點。然後結果排序,選擇前兩個:

select v.* 
from values v join 
    priority p 
    on v.id = p.id 
where v.value < 5 
order by priority 
limit 2; 

不同的數據庫引擎有限制的結果2不同的方式。因此,limit子句可能是其他內容,例如select top 2,具體取決於數據庫。