--CTE查询
/*
CTE(Common Table Expression) ,即公用表表达式,
可以认为是在单个 SELECT、INSERT、UPDATE、DELETE 或 CREATE ⅥEW 语句的执行范围内定义的临时结果集。
CTE 与派生表类似,具体表现在不存储为对象,并且只在查询期间有效。
与派生表的不同之处在于,CTE 可自引用,还可在同一查询中引用多次。
CTE可用于:
⒈创建递归查询(我个人认为CTE最好用的地方)
⒉在同一语句中多次引用生成的表
CTE优点:
使用 CTE 可以获得提高可读性和轻松维护复杂查询的优点。
查询可以分为单独块、简单块、逻辑生成块。之后,这些简单块可用于生成更复杂的临时 CTE,直到生成最终结果集。
CTE可使用的范围:
可以在用户定义的例程(如函数、存储过程、触发器或视图)中定义 CTE。
**个人理解CTE可以将一个查询的结果集作为另一个查询的临时表(但是及时性的不存储)
格式:
with 标识符(字段)
as
(
)
*/
--数据库环境MSSQLSERVER2008
create table tb1
(
id int identity not null,
username varchar(20) not null,
[password] varchar(20) not null,
primary key (id)
)
--循环插入20000数据
declare @count int
declare @user varchar(20)
declare @pwd varchar(20)
set @count=0
while @count<20000
begin
set @user='superuser'+CAST(@count as varchar)
set @pwd='superpwd'+CAST(@count as varchar)
insert into tb1(username,password)values(@user,@pwd)
set @count=@count+1
end
with cte(username,password)
as
(
select username,password from tb1
)
select username,password from cte