mysql where为什么不能使用别名_sql where后面不能使用别名吗

--这个sql语句为什么会错误selecttop2"Temp".*,"D".dname"DeptName","S".grade"SalGrade"from(select"E".deptno"deptNumber",floor(avg("E".sal))"avgSal",count(*)"PersonNumber"fro...

--这个sql语句为什么会错误

select top 2 "Temp".*, "D".dname "DeptName", "S".grade "SalGrade"

from

(

select "E".deptno "deptNumber",floor(avg("E".sal)) "avgSal",count(*) "PersonNumber"

from emp "E"

where "E".sal > 2000

group by "E".deptno

order by "Temp"."avgSal" desc --这里的差别

) "Temp"

join salgrade "S" on "Temp"."avgSal" >= "S".losal and "Temp"."avgSal" <= "S".hisal

join dept "D" on "D".deptno = "Temp"."deptNumber"

--这个sql语句为什么会正确

select top 2 "Temp".*, "D".dname "DeptName", "S".grade "SalGrade"

from

(

select "E".deptno "deptNumber",floor(avg("E".sal)) "avgSal",count(*) "PersonNumber"

from emp "E"

where "E".sal > 2000

group by "E".deptno

) "Temp"

join salgrade "S" on "Temp"."avgSal" >= "S".losal and "Temp"."avgSal" <= "S".hisal

join dept "D" on "D".deptno = "Temp"."deptNumber"

order by "Temp"."avgSal" desc --这里的差别

select top 2 "Temp".*, "D".dname "DeptName", "S".grade "SalGrade"

from

(

select "E".deptno "deptNumber",floor(avg("E".sal)) "avgSal",count(*) "PersonNumber"

from emp "E"

where "E".sal > 2000

group by "E".deptno

) "Temp"

join salgrade "S" on "Temp"."avgSal" >= "S".losal and "Temp"."avgSal" <= "S".hisal

join dept "D" on "D".deptno = "Temp"."deptNumber"

order by "Temp"."avgSal" desc

//注意:上面两个语句的差别是 order by "avgSal" desc 放在子select末尾还是外部select末尾

错误消息:

消息 1033,级别 15,状态 1,第 10 行

除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值