0

我对 SQL 的了解有限,所以有人可以告诉我我的想法是否正确。我有一张桌子,随着时间的推移会慢慢填满。我需要删除从第一条记录到表中给定点的记录。由于主键基于 GUID,我知道我无法轻松删除,因为我无法根据 GUID 进行排序(这在上一个线程中讨论过)。是否可以使用游标查看表中的第一条记录并在表中删除记录,直到我到达某个 GUID?我遇到的问题是,我需要删除在 GUID 定义的记录之前放入表中的所有记录,但如果记录的数据比预定义的日期更旧,我只能删除它们。我知道这有点混乱,但我必须重新安装一个解决方案,所以现在可以使用一个强大的解决方案。

我正在使用 MS SQL Server 2008

4

2 回答 2

4

首先,您必须想知道在处理任何类型的 SQL 查询时是否真的要使用游标。

SQL 是基于集合的,因此它非常高效并且能够处理“集合”数据。

首先,您对“第一条记录”的定义是什么?您如何确定一条记录是否在另一条记录之前?

我了解您的表中定义了“日期时间”列?

是否可以确定您仍想保留在表中的记录的“日期时间”?

如果是这样,我认为您可以简单地使用 WHERE 子句对表执行 DELETE,以确保不删除指定日期之前的记录。

于 2009-12-21T10:42:18.693 回答
0

假设 GUID 是您找出要删除多远的方式:

DELETE FROM TheTable WHERE DateColumn < (SELECT DateColumn FROM TheTable WHERE GuidColumn = 'GUIDGUID-GUID-GUID-GUID-GUIDGUIDGUID')
于 2009-12-21T10:59:20.497 回答