读书人

SQLSERVER 2000 升级 2005 ORDER BY

发布时间: 2013-11-11 14:02:17 作者: rapoo

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

读书人网 >SQL Server

热点推荐