id 列に PK を持つテーブルがあります。テーブルをきれいにして、最新の 5 つのレコード (最後の 5 つの ID - 最新のもの) をテーブルに残す必要があります。
使用する以外row_number()
に、それを行う方法は他にありますか? どうも。
id 列に PK を持つテーブルがあります。テーブルをきれいにして、最新の 5 つのレコード (最後の 5 つの ID - 最新のもの) をテーブルに残す必要があります。
使用する以外row_number()
に、それを行う方法は他にありますか? どうも。
最初に、最新の 5 行の PK を取得します。
SELECT TOP 5 id FROM [table] ORDER BY id DESC
このサブクエリは、最新の行の PK が最も高いと仮定して、最新の 5 つの行の ID を返します。
このサブクエリはWHERE
、外側のクエリの句で使用されます
DELETE FROM [table] WHERE id NOT IN ([subquery from above])
これはこれと同等です
DELETE FROM [table] WHERE id NOT IN (id0, id1, id2, id3, id4)
完全なクエリは次のとおりです。
DELETE FROM [table]
WHERE id NOT IN (SELECT TOP 5 id
FROM [table]
ORDER BY id DESC)
最初に上位 5 つのレコードを一時テーブルに挿入します。次に、クエリの下で起動します..、
Table_Name から削除
次に、以下のクエリを使用して、一時テーブルからメイン テーブルに再度 (5 レコード) 挿入します。
Insert into Table_Name select * from Temp_Table