これを試してみてください:
with a as
(
select ROW_NUMBER() over(order by name) as ordinal, * from test
)
delete from a where a.ordinal > 10;
関連:http://www.ienablemuch.com/2012/03/possible-in-sql-server-deleting-any-row.html
サンプルデータ:
CREATE TABLE [beatles]
([name] varchar(14));
INSERT INTO [beatles]
([name])
VALUES
('john'),
('paul'),
('george'),
('ringo'),
('pete'),
('brian'),
('george martin');
問合せ:
with a as
(
select *, row_number() over(order by name) ordinal
from beatles
)
delete from a
where ordinal > 4;
select * from beatles;
前削除:
NAME
brian
george
george martin
john
paul
pete
ringo
削除した後:
NAME
brian
george
george martin
john
ライブテスト:http://www.sqlfiddle.com/#!3/0adcf/6
はID番号ではなく、に基づいて上位10得点idを選択するサブクエリでhighscore_IDを選択しないだろう実際のハイスコア? – Euthyphro
あなたはサブクエリのためにHighscore_Idを返さなければなりませんが、そうであれば順序は合わないでしょう。あなたは一般的にあなたのテーブルにランクを追加し、ランク> 11ですべてを削除する必要があります)、それは動作します。 – YvesR
ありがとうございます。 "スコアから削除 難易度= 1 AND Highscore_ID NOT IN(難易度= 1 ORDER BY highScore DESC)のスコアを選択します; – Euthyphro