Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从不带日期字段的表中删除数据_Sql_Sql Server - Fatal编程技术网

Sql 从不带日期字段的表中删除数据

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个月前的备份,则可以从该备份中的表中删除所有数据。

您可以计算每月生成的平均数据量。*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
字段,他们应该如何处理这些信息?