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;
/*
orderCol myTable
1 1
*/
------解决方案--------------------
建议修改代码,
SELECT * FROM
(SELECT orderCol=1,*
FROM(select 1 myTable) SourceTable) SourceTable
ORDER BY SourceTable.orderCol