gpt4 book ai didi

sql-server - 选择顶部(全部)

转载 作者:行者123 更新时间:2023-12-01 23:25:50 25 4
gpt4 key购买 nike

declare @t int
set @t = 10
if (o = 'mmm') set @t = -1
select top(@t) * from table

如果我想要的结果通常是 10 行,但很少是全部。

我知道我可以通过“SET ROWCOUNT”来做到这一点。但是是否有一些变量数字,例如 -1,导致 TOP 结果为所有元素。

最佳答案

可以传递给TOP的最大可能值是9223372036854775807,所以你可以直接传递它。

下面我使用 maxsigned bigint 的二进制形式,因为只要你知道基本模式并且 bigint 是 8 个字节,就更容易记住。

declare @t bigint =  case when some_condition then 10 else  0x7fffffffffffffff end;

select top(@t) *
From table

如果您没有 order by 子句,则前 10 个将只是任意 10 个且依赖于优化。

如果您确实有一个 order by 子句来定义前 10 个值,并且有一个索引来支持它,那么上述查询的计划应该适合任一可能的值。

如果您没有支持索引并且计划显示了一种排序,您应该考虑拆分为两个查询。

关于sql-server - 选择顶部(全部),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4971206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com