我想弄清楚如何選擇讓我說我的表中有每個鍵的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
感謝您的任何幫你提供!
我想弄清楚如何選擇讓我說我的表中有每個鍵的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
感謝您的任何幫你提供!
使用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;
謝謝!您是否碰巧知道我需要做些什麼來確保第1列與第2列配對是唯一的? – user1857654
@ user1857654。 。 。應該將新問題作爲問題提出,而不是評論。 –
SELECT * FROM 表1一個 WHERE ( SELECT COUNT(*)FROM 表1 b WHERE a.uid = b的.uid AND a.map < = b.map )< = 2
這被稱爲「每組最大N」問題。 –