2

クエリでテーブルに行を挿入したいのですが、単純なことはわかっていますが、テーブルに 5 行を超えてはならないというシナリオです。テーブルに5行以上ある場合、古い行を削除する必要があります(または新しい行に置き換えます)(挿入タイムスタンプに基づいて)、新しい行を挿入する必要があります.行数が5未満の場合、直接できます行を挿入します。

クエリを共有してください。

4

4 に答える 4

0

ここにあるコードの一部は疑似コードです (スキーマを作成したわけではありません) が、独自のコードを完成させる必要がある場所を記述しました。

DECLARE @NumberOfRowsToInsert INT = -- select from the data you want to insert
DECLARE @MaxNumberOfRows INT = 5
DECLARE @NumberOfExistingRows INT

DECLARE @Query VARCHAR(MAX) = 'SELECT TOP @rows id FROM SomeTable ORDER BY createdDate ASC'

SELECT @NumberOfExistingRows = COUNT(*)
FROM SomeTable

SET @Query = REPLACE(@Query,'@rows',
 CAST(@NumberOfRowsToInsert - (@MaxNumberOfRows - @NumberOfExistingRows))) AS VARCHAR(1))

CREATE TABLE #IdsToDelete(id INT PRIMARY KEY)

INSERT INTO #IdsToDelete
EXEC(@Query)

DELETE FROM SomeTable
WHERE id IN (SELECT * FROM #IdsToDelete)

-- insert here..
于 2013-09-13T10:31:50.157 に答える