sql-server - 为什么 DELETE TOP(X) 语句不删除先前 SELECT TOP(X) 返回的相同记录?

标签 sql-server

正如标题所示,我一直在运行此命令来从表中删除一些记录,但我注意到,如果我运行选择 TOP(X)< 的查询,它不会删除列出的相同记录 记录之前。

DELETE 命令不应该遵循与 SELECT 相同的默认顺序吗?如果不是,为什么?

我不知道这是否重要,但这是我正在运行的删除命令:

DELETE TOP (100000) t
FROM Ticket AS t
    LEFT JOIN Series s on t.SeriesId = s.id
    LEFT JOIN Payment p on t.id = p.TicketId
WHERE s.EndDate <= DATEADD(MONTH, -1, GETDATE()) AND t.ExportDate is null AND p.TicketId is null

对于选择,只需将第一行替换为SELECT TOP(100000) t.*

最佳答案

如果没有 ORDER BY,则无法保证数据的顺序。

关于sql-server - 为什么 DELETE TOP(X) 语句不删除先前 SELECT TOP(X) 返回的相同记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55107680/

相关文章:

sql - 向3个相关表中插入数据

sql-server - SQL Server Service Broker 队列对话对话框

c# - SQL Server 与 C# 的连接 -> 数据库是否存在?

c# - 为什么我无法使用 SqlCommand 创建触发器?

c# - 将 C# 代码中使用 MERGE 的 SQL 进程替换为 LINQ

sql-server - SELECT CASE 与 SQL 中的 CASE

sql-server - SQL Server 中的通用对象

php - PDOStatement::nextRowset() 不适用于 dblib 和 MSSQL

sql-server - 创建过程时验证引用的表是否存在

sql-server - Visual Studio 2013 : Mocking Stored Procedures when Unit Testing SQL Server Database Project