当前位置: 代码迷 >> Sql Server >> 求帮,select 执行语句的 逻辑执行顺序解决思路
  详细解决方案

求帮,select 执行语句的 逻辑执行顺序解决思路

热度:55   发布时间:2016-04-24 19:19:03.0
求帮,select 执行语句的 逻辑执行顺序
create table a (name nvarchar(10),course varchar(10))
insert into a values(N'张三', '12')
insert into a values(N'张三', '111') 
insert into a values(N'张三', '222')
insert into a values(N'李四', '111') go  


表a 
name       course
---------- ----------
张三         111
张三         222
李四         111
张三         12

执行语句:


SELECT     name, course,
                          (SELECT     COUNT(1) AS Expr1
                            FROM          a
                            WHERE      (name = t.name) AND (course < t.course)  ) + 1 AS px
FROM         a AS t

结果:name       course     px
---------- ---------- -----------
张三         111        1
张三         222        3
李四         111        1
张三         12         2




------解决方案--------------------
首先是from a as t也就是最后一句,得出一个虚拟表假设名字为V1,这个表不能在查询过程中查到,第二步是内层FROM A这个,然后进行WHERE条件筛选,第三步把筛选数据和外层的FROM A AS T进行关联,得到一个结果,第四部进行COUNT操作,最后一步返回SELECT 的结果
------解决方案--------------------
或者你用文本化执行计划看过程,从最内层开始,逐步向外执行
create table a (name nvarchar(10),course varchar(10))
insert into a values(N'张三', '12')
insert into a values(N'张三', '111') 
insert into a values(N'张三', '222')
insert into a values(N'李四', '111')  


SET STATISTICS PROFILE ON 
SELECT  name ,
        course ,
        ( SELECT    COUNT(1) AS Expr1
          FROM      a
          WHERE     ( name = t.name )
                    AND ( course < t.course )
        ) + 1 AS px
FROM    a AS T

/*
Rows                 Executes             StmtText                                                                                                                                                                                                                   StmtId      NodeId      Parent      PhysicalOp                     LogicalOp                      Argument                                                                                                                                                                            DefinedValues                                  EstimateRows  EstimateIO    EstimateCPU   AvgRowSize  TotalSubtreeCost OutputList                            Warnings Type                                                             Parallel EstimateExecutions
  相关解决方案