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

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

2012-09-20 
这个嵌套两层的sql语句为什么是无效的?SQL codeselec * from (select top 20 * from (select top 100 * fr

这个嵌套两层的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和嵌套的东西,显式添加别名是良好的编程规范,且可以减少很多不必要的错误。

热点排行