最近从SQL Server 2016升级到2017我遇到了一个奇怪的错误,我把它缩小到:
select top 1 * from (
select top 1 id from [user]
union all
select 0
) a
现在如果我在SQL Server 2016中运行它,我会得到
1
如果我在2017年运行它,我会
0
如果我将select top 1 *
更改为select *
我
1
0
在SQL Server 2016和2017中......
如果我按照
更新查询select top 1 * from (
select top 1 id from [user]
union all
select 0
) a order by id desc
然后我在SQL Server 2016和2017中都得到了正确的结果1.
这是查询优化器看到'选择0'更快并返回结果?
答案 0 :(得分:0)
您是否尝试使用ORDER BY 1 DESC
?
它应解决两个版本的问题
select top 1 * from (
select top 1 id from [user]
union all
select 0
) a ORDER BY 1 DESC