我有这样的记录表
2013 1
2013 2
2013 3
2013 4
2013 5
2013 6
2013 7
2013 8
2013 9
2013 10
2013 11
2013 12
2014 1
2014 2
2014 3
2014 4
2014 5
2014 6
2014 7
2014 8
2014 9
2014 10
我想选择所有记录和下一个记录,但我不应该选择2013年1月,2月和3月的前3个记录。
答案 0 :(得分:1)
select yy, mm from table_name
where not (mm < 4 and yy=(select min(yy) from table_name))
order by yy, mm
答案 1 :(得分:0)
如果您使用的是支持窗口功能的DBMS
WITH C AS (
SELECT RANK() OVER (ORDER BY yy, mm) Rnk
,yy
,mm
FROM YourTableName
)
SELECT yy, mm FROM C WHERE Rnk >= 3
答案 2 :(得分:0)
1)假设MySQL
MySQL不限制逻辑,
即,这不起作用:
select * from my_table order by year,month asc limit count(*)-3;
虽然我会承认这会很好。以下是使用过程的解决方法:
How can select all records excepting first 3 records?
您也可以通过创建新表和auto_incremented id来实现相同的目标:
CREATE TABLE IF NOT EXISTS temptable (id int not null auto_increment,year char(4) not null,month char(2) not null,primary key(id));
insert into temptable (year,month) select * from primary_table order by year,month;
delete from temptable where id <= 3;
select year,month from temptable;
drop table temptable;
希望这有帮助。