首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

集合操作中别名的使用有关问题

2012-12-14 
集合操作中别名的使用问题use Northwindgoselect EmployeeID ,CustomerID,OrderID,OrderDatefrom ( select

集合操作中别名的使用问题
use Northwind
go
select EmployeeID ,CustomerID,OrderID,OrderDate
from ( select 1 as SortCol,CustomerID,EmployeeID,OrderID,OrderDate
       from dbo.Orders
       where CustomerID = 'ALFKI'
       union all 
       select 2 as SortCol,CustomerID,EmployeeID,OrderID,OrderDate
       from dbo.Orders
       where EmployeeID = 3 )as U
 order by SortCol ,
 case when SortCol = 1 then OrderID end,
 case when SortCol = 2 then OrderDate end desc;

上面的sql语句使用示例数据库Northwind中的表Orders,当CustomerID
为ALFKI,按OrderID排当EmployeeID = 3按 OrderDate降序排这儿为什么
去掉集合操作中的别名as U会报错????


[最优解释]
from 后面接表名或者子查询名称.你把 as U去掉后,就没有名称了.当然会报错.
[其他解释]
因为 (select 1 as SortCol,CustomerID,EmployeeID,OrderID,OrderDate
       from dbo.Orders
       where CustomerID = 'ALFKI'
       union all 
       select 2 as SortCol,CustomerID,EmployeeID,OrderID,OrderDate
       from dbo.Orders
       where EmployeeID = 3 ) 整个 作为了一个名为U的表来使用

简写就是  

select EmployeeID ,CustomerID,OrderID,OrderDate from U order by SortCol ,
 case when SortCol = 1 then OrderID end,
 case when SortCol = 2 then OrderDate end desc;

[其他解释]
楼上回答的我知道,现在如果不使用别名U,也就是去掉as U, 就会报错,这个是怎么回事????

热点排行