gpt4 book ai didi

sql - TOP 总是返回相同的行吗

转载 作者:行者123 更新时间:2023-12-04 02:21:54 25 4
gpt4 key购买 nike

我已经编写了一些代码将数据移动到存档表中,一次 1000 行(SQL Server 2008 R2):

-- archive data
while (@QuitLoop = 0)
begin
begin transaction

insert into MyTransactionTable (...)
select top 1000 * from MyTransactionTable where DateOfSale < @ArchiveCutOffDate

delete top 1000 from MyTransactionTable where DateOfSale < @ArchiveCutOffDate

if (@@rowcount = 0) select @QuitLoop = 1
commit transaction
end

top 总是返回相同的 1000 行吗?

所以插入到归档表中的行与从事务表中删除的行相同。

最佳答案

因为您不使用它们,所以它们将保证返回相同的行。

为什么?因为您没有指定 order by 子句。它只是引擎决定的 1000 条记录是当时的“顶级”记录。

另请注意,即使您指定了一个 order by 也有可能您仍然不会得到相同的 1000 行...如果您的 order by 没有足够的选择性以至于在第 1000 个项目是一个特定的、可定义的订单。

例如;如果顶部有 1002 个具有相同排序值的项目,您不知道哪 2 个项目被包括在内。

关于sql - TOP 总是返回相同的行吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5633356/

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