当前位置: 代码迷 >> Sql Server >> 这个嵌套两层的sql话语为什么是无效的
  详细解决方案

这个嵌套两层的sql话语为什么是无效的

热度:60   发布时间:2016-04-27 11:06:17.0
这个嵌套两层的sql语句为什么是无效的?
SQL code
selec * from (select top 20 * from (select top 100 * from Concentrator order by 序号 asc) order by 序号 desc) order by 序号 asc


这个的代码的基础设想是,先搜索表中前100行,然后把这100行倒序,得到第81-100行的数据,但是此时是逆排的,再把这个结果按升序排一次,结果提示这个语句是无效的

------解决方案--------------------
SQL code
select * from (select top 20 * from (select top 100 * from BS_EMPL order by SID asc) as a order by SID desc) as a order by SID asc
------解决方案--------------------
因为比如你执行select getdate()的时候,可以看到结果里面是没有别名的,那么当你把这个放到一个嵌套里面的时候,SQLServer就不知道怎么去调用这个东西了,SQLServer要找到一个明确的名字才能用。所以对select和嵌套的东西,显式添加别名是良好的编程规范,且可以减少很多不必要的错误。
  相关解决方案