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

SQLSERVER 2000 升级 2005 ORDER BY 兼容性有关问题

2013-11-11 
SQLSERVER 2000 升级 2005ORDER BY 兼容性问题ALTER DATABASE [MyDataBase]SET COMPATIBILITY_LEVEL 80

SQLSERVER 2000 升级 2005 ORDER BY 兼容性问题


ALTER DATABASE [MyDataBase]
SET COMPATIBILITY_LEVEL = 80;
GO
SELECT orderCol = 1, * FROM(select 1 myTable) SourceTable ORDER BY SourceTable.orderCol;
-- 可以通过

ALTER DATABASE [MyDataBase]
SET COMPATIBILITY_LEVEL = 90;
GO
SELECT orderCol = 1, * FROM(select 1 myTable) SourceTable ORDER BY SourceTable.orderCol;
-- 不可以通过

-- 求问不改兼容级别,不改代码,如何破?

[解决办法]
ORDER BY orderCol
ordercol是自定义列名,不存在表集SourceTable中
什么都不改没法通过的吧
[解决办法]
可能是2005之后有些旧写法不支持,比如*=这些,问题是(select 1 myTable)这个你这样写有什么意图?
[解决办法]
引用:
Quote: 引用:

ORDER BY orderCol
ordercol是自定义列名,不存在表集SourceTable中
什么都不改没法通过的吧
兼容性问题,2000可以过


改成这样,倒是可以:


ALTER DATABASE ttt
SET COMPATIBILITY_LEVEL = 90;
GO

SELECT orderCol=1, * 
FROM(select 1 myTable) SourceTable 
ORDER BY orderCol;
/*
orderColmyTable
11
*/

[解决办法]
建议修改代码,

SELECT * FROM
(SELECT orderCol=1,*
 FROM(select 1 myTable) SourceTable) SourceTable
ORDER BY SourceTable.orderCol

热点排行