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)这个你这样写有什么意图?
[解决办法]
改成这样,倒是可以:
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