Sql 从不带日期字段的表中删除数据
我正在尝试从没有日期字段的6个月以上的表中删除数据。请告诉我。如果没有日期字段,这是不可能的Sql 从不带日期字段的表中删除数据,sql,sql-server,Sql,Sql Server,我正在尝试从没有日期字段的6个月以上的表中删除数据。请告诉我。如果没有日期字段,这是不可能的 但是,如果您有6个月前的备份,您可以从该备份中的表中删除所有数据。如果没有日期字段,这是不可能的 但是,如果您有6个月前的备份,则可以从该备份中的表中删除所有数据。您可以计算每月生成的平均数据量。*6将提供要保留的行数。 因此,您可以使用当前的最大ID,少于n行。如果您的表没有ID,则可以使用如下人工ID: SELECT *, n = ROW_NUMBER() OVER (ORDER BY (SELE
但是,如果您有6个月前的备份,您可以从该备份中的表中删除所有数据。如果没有日期字段,这是不可能的
但是,如果您有6个月前的备份,则可以从该备份中的表中删除所有数据。您可以计算每月生成的平均数据量。*6将提供要保留的行数。 因此,您可以使用当前的最大ID,少于n行。如果您的表没有ID,则可以使用如下人工ID:
SELECT *, n = ROW_NUMBER() OVER (ORDER BY (SELECT NULL)),
FROM your_table_name
您可以计算每月生成的平均数据量。*6将提供要保留的行数。 因此,您可以使用当前的最大ID,少于n行。如果您的表没有ID,则可以使用如下人工ID:
SELECT *, n = ROW_NUMBER() OVER (ORDER BY (SELECT NULL)),
FROM your_table_name
如果没有日期列,则无法知道哪些行的时间超过六个月。如果键列不是单调递增的值(即,不是简单的整数序列),这尤其是一个问题 但是,如果您有数据库的备份,您可能会在六个月前的备份数据库中生成一个行列表,并将其与当前数据库中的行进行比较,然后推断在进行备份后添加了哪些行。那么您就知道剩下的行至少有六个月的历史了 建议#2 如果行的键列是一个单调递增的值(例如整数序列或唯一递增的帐户ID),那么您可以在每个月(或周或日,无论什么)插入一个特殊的sentinel记录,其中包含特殊值,告诉您这是一个标记行(而不是正常数据)。然后您就知道,每一行的键字段值都比sentinel的键值低,并且插入到sentinel之前
然后每个月(周/日/无论什么),查找那些较旧的行并删除它们相当简单。没有日期列,您无法知道哪些行的时间超过六个月。如果键列不是单调递增的值(即,不是简单的整数序列),这尤其是一个问题 但是,如果您有数据库的备份,您可能会在六个月前的备份数据库中生成一个行列表,并将其与当前数据库中的行进行比较,然后推断在进行备份后添加了哪些行。那么您就知道剩下的行至少有六个月的历史了 建议#2 如果行的键列是一个单调递增的值(例如整数序列或唯一递增的帐户ID),那么您可以在每个月(或周或日,无论什么)插入一个特殊的sentinel记录,其中包含特殊值,告诉您这是一个标记行(而不是正常数据)。然后您就知道,每一行的键字段值都比sentinel的键值低,并且插入到sentinel之前
然后每个月(周/日/无论什么),查找那些较旧的行并将其删除相当简单。请阅读以下内容:如果您有一个键列链接到另一个具有日期字段的表,则可以使用该键列,例如从表1中删除表1中的内部连接表2。表2ID=表2.table2id,其中表2Date<@DateOlderthan 6个月无法完成。SQL Server中没有保留这种性质的特定审核。我打赌您很快就会在此处向表中添加DateEntered/DateUpdated字段。请阅读以下内容:如果您有一个键列链接到另一个具有日期字段的表,您可以使用它,例如从表1中删除表1中的内部联接表2。table2id=table2.table2id where table2date<@DateOlder超过6个月无法完成。SQL Server中没有保存这种性质的SEPCFIC审计。我敢打赌,您将在此处向表中添加一个DateEntered/DateUpdated字段,并在19秒内将我添加到该字段中+1是的,我提出了同样的建议。比我快19秒+1是的,我也提出了同样的建议。如果表格没有
id
字段,他们应该如何处理这些信息?如果表格没有id
字段,他们应该如何处理这些信息?