如果是SQL2005以上则可以用CTE递归写法
创新互联建站云计算的互联网服务提供商,拥有超过13年的服务器租用、郑州服务器托管、云服务器、网页空间、网站系统开发经验,已先后获得国家工业和信息化部颁发的互联网数据中心业务许可证。专业提供云主机、网页空间、域名注册、VPS主机、云服务器、香港云服务器、免备案服务器等。
use tempdb
go
create table #emp
(eid integer not null,
ename varchar(10) not null,
epid integer null,
)
insert into #emp
select 1,'A',5
union all
select 2,'me',3
union all
select 3,'bos',4
union all
select 4,'boss',null
select * from #emp
;with empcte as
(select epid,(select ename from #emp b where b.eid = a.epid) as name from #emp a where ename = 'me'
union all
select b.epid,(select ename from #emp where eid = b.epid) as name from empcte a join #emp b on a.epid = b.eid
)
select * from empcte where epid is not null
oracle组合分区
由于Interval分区是针对range的,11g-12.1版本,目前只有Interval—*一共3种Interval的复合分区
range-list方法:
partition by range (updatetime)
interval (numtodsinterval(1,'day'))
subpartition by list(PSNCODE)
SUBPARTITION TEMPLATE(
SUBPARTITION REGION_1 values('038716'),
SUBPARTITION REGION_2 values('270719') )
(partition p1 values less than(to_date('2014-05-01','yyyy-mm-dd')))
注意:每个分区有2个子分区,分区的子分区需要手动添加
Interval分区目前测试,只支持range先分区的方式
range-hash方法:每个分区10个子hash分区(可以指定每个子分区到单独的表空间)
partition by range (updatetime)
interval(numtodsinterval(1,'day'))
subpartition by hash(PSNCODE)
SUBPARTITION template
( SUBPARTITION p1 TABLESPACE ts1
, SUBPARTITION p2 TABLESPACE ts2
, SUBPARTITION p3 TABLESPACE ts3
, SUBPARTITION P4 TABLESPACE ts4
)
(partition p1 values less than(to_date('2014-05-01','yyyy-mm-dd')))
注意:这种方式可以实现完全自动的分区,非常适合自增长特性的10位数以上的大表
hash分区最好是2的次方个,不然数据会分布不均
range-range方法:子分区需要手动添加,这种分区需要一般比较少见
PARTITION BY RANGE (time_id)
INTERVAL (NUMTODSINTERVAL(1,'DAY'))
SUBPARTITION BY RANGE(amount_sold)
SUBPARTITION TEMPLATE
( SUBPARTITION p_low VALUES LESS THAN (1000)
, SUBPARTITION p_medium VALUES LESS THAN (4000)
, SUBPARTITION p_high VALUES LESS THAN (8000)
, SUBPARTITION p_ultimate VALUES LESS THAN (maxvalue)
)
(PARTITION before_2000 VALUES LESS THAN (TO_DATE('01-JAN-2000','dd-MON-yyyy')) )
按日汇总:
select trunc(datcol),其他列,sum(数量)
from tabname
group by trunc(datcol),其他列
实例
实例就是一组操作系统进程(或者是一个多线程的进程)以及一些内存。这些进程可以操作数据库;实例 就是治理相关库的内存结构的名字(由SGA、PGA、服务器进程、用户进程、后台进程等组成)
数据库
数据库只是一个文件集合(包括数据文件、临时文件、重做日志文件和控制文件)。在任何时刻,一个实例只能有一组相关的文件(与一个数据库关联)。数据库 就是实际的磁盘上的文件(数据文件、日志文件、控制文件等),负责保存数据,但由对应的实例来操作它的数据
3.服务名
服务名 就是对外公布的名称,为网络监听服务
4.SID
sid用于实例区分各个数据库,service name用于外部链接。