下面是一個包含20個項目的測試表。選擇具有特定行號值的行
create table test (id int not null primary key);
insert into test values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15),(16),(17),(18),(19);
我可以這樣添加行號列(提琴:http://sqlfiddle.com/#!2/dade4/3):
select id, @r:[email protected]+1 r
from test a
join (select @r:=0) b;
然後我試圖讓第一10個項目有HAVING
條款(小提琴:http://sqlfiddle.com/#!2/dade4/4):
select id, @r:[email protected]+1 r
from test a
join (select @r:=0) b
having r <= 10;
這裏有意想不到的結果:
ID| R
------
0 | 2
1 | 4
2 | 6
3 | 8
4 | 10
這是爲什麼,以及如何檢索r在1和10之間的行?
(我沒有使用限制,因爲在不同的查詢,我需要選擇每個類別的前n項)