24日記錄我有一個表有許多時間戳條目(timestamp列命名爲「零零」)的值的記錄。T-SQL:刪除基於一個獨特的日期列
我希望定期從表比DATED列中的最後24個日期不同年長刪除舊條目。
所以我試圖寫一個刪除查詢 誰的WHERE子句解析(日期< [第24屆鮮明日期二零零從])
我不想設計查詢刪除記錄比舊x天。 我想該表始終保持,即使他們是舊的記錄24個的記錄集。
任何意見?
24日記錄我有一個表有許多時間戳條目(timestamp列命名爲「零零」)的值的記錄。T-SQL:刪除基於一個獨特的日期列
我希望定期從表比DATED列中的最後24個日期不同年長刪除舊條目。
所以我試圖寫一個刪除查詢 誰的WHERE子句解析(日期< [第24屆鮮明日期二零零從])
我不想設計查詢刪除記錄比舊x天。 我想該表始終保持,即使他們是舊的記錄24個的記錄集。
任何意見?
隨着Coomon Table Expression
的幫助和Window Function
你可以得到你想要的東西。
對於SQL Server 2005
WITH recordList
AS
(
SELECT *,
DENSE_RANK() OVER (PARTITION BY convert(varchar(20), DATED, 102)
ORDER BY DATED DESC) rn
FROM TableName
)
DELETE FROM recordList
WHERE rn > 24
對於SQL Server 2008+
WITH recordList
AS
(
SELECT *,
DENSE_RANK() OVER (PARTITION BY CAST(DATED AS DATE)
ORDER BY DATED DESC) rn
FROM TableName
)
DELETE FROM recordList
WHERE rn > 24
DELETE FROM TABLE
WHERE ID IN
(
SELECT ID
FROM
(
SELECT ID, ROW_NUMBER() OVER (PARTITION BY DATE DESC) RN
FROM TABLE
) A
WHERE RN > 24
)
你能告訴你的表結構? – JohnFx 2013-04-04 13:48:39