2017-08-08 82 views
0

我想弄清楚如何選擇讓我說我的表中有每個鍵的2個結果。SQL選擇將結果限制爲特定列中每個id值的X

我的表如下所示

uid map 
1 11 
1 12 
1 16 
1 21 
1 26 
2 1 
2 11 
2 14 
2 12 
2 22 
3 12 
3 15 
3 16 

什麼即時希望做的是選擇最多2行數據爲每個UID

例子的結果:

uid map 
1 11 
1 12 
2 1 
2 11 
3 12 
3 15 

感謝您的任何幫你提供!

+0

這被稱爲「每組最大N」問題。 –

回答

3

使用ANSI標準的SQL,最簡單的方法是row_number()

select uid, map 
from (select t.*, row_number() over (partition by uid order by map) as seqnum 
     from t 
    ) t 
where seqnum <= 2; 
+0

謝謝!您是否碰巧知道我需要做些什麼來確保第1列與第2列配對是唯一的? – user1857654

+0

@ user1857654。 。 。應該將新問題作爲問題提出,而不是評論。 –

0

SELECT * FROM 表1一個 WHERE ( SELECT COUNT(*)FROM 表1 b WHERE a.uid = b的.uid AND a.map < = b.map )< = 2

相關問題