0
我有一個表具有以下3列SQL保持44個外鍵500個最新的項目在一個表中
Recid (primary key), different_recid(foreign key), and details
我想寫的10項具體different_recids
的查詢,刪除那些所有行different_recids
只有最近一次除外。
任何人都有建議。
我有一個表具有以下3列SQL保持44個外鍵500個最新的項目在一個表中
Recid (primary key), different_recid(foreign key), and details
我想寫的10項具體different_recids
的查詢,刪除那些所有行different_recids
只有最近一次除外。
任何人都有建議。
DECLARE @MyTable TABLE
(
RecID INT IDENTITY(1,1) PRIMARY KEY,
Different_RecID INT,
Create_Date DATETIME
);
INSERT @MyTable (Different_Recid, Create_Date)
SELECT 1, '20130101' UNION ALL
SELECT 1, '20130102' UNION ALL
SELECT 1, '20130103' UNION ALL
SELECT 2, '20130211' UNION ALL
SELECT 2, '20130212' UNION ALL
SELECT 3, '20130102' UNION ALL
SELECT 3, '20130103';
DECLARE @RowsToDelete TABLE(ID INT PRIMARY KEY);
INSERT @RowsToDelete VALUES (1);
INSERT @RowsToDelete VALUES (2);
DELETE [Target]
-- OUTPUT deleted.* -- <-- Uncomment this line to see deleted rows
FROM
(
SELECT *
FROM
(
SELECT ROW_NUMBER() OVER(PARTITION BY x.Different_RecID ORDER BY x.Create_Date DESC) RowNum, x.*
FROM @MyTable x
WHERE EXISTS
(
SELECT *
FROM @RowsToDelete d
WHERE x.Different_RecID = d.ID
)
) src
WHERE src.RowNum > 1
) AS [Target];
結果:
SELECT * FROM @MyTable;
/*
RecID Different_RecID Create_Date
----- --------------- -----------
3 1 2013-01-03
5 2 2013-02-12
6 3 2013-01-02
7 3 2013-01-03
*/
你需要一個額外的長期捧場線#3。 – wildplasser