在做项目的时候经常会用到距离某日期最近的记录,既然是记录,那么查询出的酒不会单单是日期和进行分组的某字段,那么这个时候就需要进行表和自身的关联,但是当多个表之前进行关联,而且每个表都要与自身进行关联时就会造成查询速度慢等问题。那么应当如何才能减少表与表之间的关联,进而提高查询速度呢?
举个例子如下:
(1)创建表
-- Create table
create table EXAMPLE
(
XH NUMBER(10) not null,
NY VARCHAR2(6) not null
);
-- Add comments to the columns
comment on column EXAMPLE.XH
is '序号';
comment on column EXAMPLE.NY
is '年月';
-- Create/Recreate primary, unique and foreign key constraints
alter table EXAMPLE
add constraint EXAMPLE_XH_NY primary key (XH, NY)
using index;
(2)插入12条记录:
insert into EXAMPLE (XH, NY)
values (1, '201001');
insert into EXAMPLE (XH, NY)
values (1, '201002');
insert into EXAMPLE (XH, NY)
values (1, '201003');
insert into EXAMPLE (XH, NY)
values (1, '201004');
insert into EXAMPLE (XH, NY)
values (1, '201005');
insert into EXAMPLE (XH, NY)
values (1, '201006');
insert into EXAMPLE (XH, NY)
values (1, '201007');
insert into EXAMPLE (XH, NY)
values (1, '201008');
insert into EXAMPLE (XH, NY)
values (1, '201009');
insert into EXAMPLE (XH, NY)
values (1, '201010');
insert into EXAMPLE (XH, NY)
values (1, '201011');
insert into EXAMPLE (XH, NY)
values (1, '201012');
commit;
如下图所示:
(3)查询序号为1,2010年8月之前最大的记录,查询结果我们知道是xh为1,ny为201008,那么相应的sql语句应当怎么写比较简单呢?
Select xh as 序号,ny as 年月 from (select * from example order by ny desc) where xh=1 and ny<='201008' and rownum=1;
查询结果为:
问题得以解决。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21331312/viewspace-667777/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/21331312/viewspace-667777/