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

birdmonster 2013-11-06 11:18:06

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;
-- 不可以通过

-- 求问不改兼容级别,不改代码,如何破?
...全文
184 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2013-11-07
  • 打赏
  • 举报
回复
不改兼容级别,也不改代码,应该是没办法D.
唐诗三百首 2013-11-07
  • 打赏
  • 举报
回复
建议修改代码,

SELECT * FROM
(SELECT orderCol=1,*
 FROM(select 1 myTable) SourceTable) SourceTable
ORDER BY SourceTable.orderCol
  • 打赏
  • 举报
回复
这个应该是2005在语法检查和语义检查方面,更加严格了,对于原来能支持的写法,现在不支持了。 所以在2000能运行的,在2005中就不能运行了。
  • 打赏
  • 举报
回复
引用 2 楼 xiliangxiliangxilian 的回复:
[quote=引用 1 楼 szm341 的回复:] ORDER BY orderCol ordercol是自定义列名,不存在表集SourceTable中 什么都不改没法通过的吧
兼容性问题,2000可以过[/quote] 改成这样,倒是可以:


ALTER DATABASE ttt
SET COMPATIBILITY_LEVEL = 90;
GO

SELECT orderCol=1, * 
FROM(select 1 myTable) SourceTable 
ORDER BY orderCol;
/*
orderCol	myTable
1	1
*/
szm341 2013-11-07
  • 打赏
  • 举报
回复
引用 2 楼 xiliangxiliangxilian 的回复:
[quote=引用 1 楼 szm341 的回复:] ORDER BY orderCol ordercol是自定义列名,不存在表集SourceTable中 什么都不改没法通过的吧
兼容性问题,2000可以过[/quote] 对啊,我知道是兼容性问题,我意思就是不更改兼容级别或代码的话没法破
發糞塗牆 2013-11-07
  • 打赏
  • 举报
回复
可能是2005之后有些旧写法不支持,比如*=这些,问题是(select 1 myTable)这个你这样写有什么意图?
birdmonster 2013-11-07
  • 打赏
  • 举报
回复
引用 1 楼 szm341 的回复:
ORDER BY orderCol ordercol是自定义列名,不存在表集SourceTable中 什么都不改没法通过的吧
兼容性问题,2000可以过
szm341 2013-11-06
  • 打赏
  • 举报
回复
ORDER BY orderCol ordercol是自定义列名,不存在表集SourceTable中 什么都不改没法通过的吧

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧