我得到了一张如下表所示的表格,我做了一个SQL的结果:
COL1 | COL2
1 | 1
1 | 2
1 | 3
1 | 4
1 | 5
1 | 6
2 | 1
2 | 2
2 | 3
2 | 4
3 | 1
3 | 2
4 | 1
4 | 2
4 | 3
4 | 4
所以我想得到COL2的前3个值(即使没有3个记录,如COL1 - 值3),结果如下:
COL1 | COL2
1 | 1
1 | 2
1 | 3
2 | 1
2 | 2
2 | 3
3 | 1
3 | 2
4 | 1
4 | 2
4 | 3
答案 0 :(得分:0)
使用BETWEEN应该有效:
select * from mytable
where COL2 between 1 and 3
order by COL1, COL2;
工作演示:http://rextester.com/QIIZ51160
注意:如果每个组中的前三个值不总是介于1和3之间,则必须使用其他方法。此查询将为COL1中的每个值提供第二列中的前3个值:
select COL1, COL2, rank
from
(select COL1, COL2,
@rank := IF(@curr = COL1, @rank + 1, 1) AS rank,
@curr := COL1
FROM mytable
ORDER BY COL1, COL2
) ranked
where rank <= 3;