2016-05-04 8 views
1

SQL Serverデータベースの上位5行などを削除したいなどです。私はこのコードを以下に示しましたが、動作しません。どのように私はこれを得ることができますか?あなたのテーブルとデータベース名あたりとしてasp.netでSQL Serverテーブルの上位n行を削除するにはどうすればよいですか?

Dim con As New SqlConnection(connectionString) 

    Using cmd = New SqlCommand() 
     cmd.CommandText = "DELETE From PubTb TOP 5" 
     cmd.Connection = con 
     con.Open() 
     Dim numberDeleted As Integer = cmd.ExecuteNonQuery() 
     con.Close() 
    End Using 
+0

「動作しません」とはどういう意味ですか?それは動作します、それはちょうど期待どおりに動作しません。ですから、今のところ、それが何をしたいのか、もしあれば、あなたが受け取ったエラーはどういうものなのかを明確にしてください。 – jitendragarg

+0

ASP.NET SQLはどういう意味ですか?それは存在しません。 ASP.NETはWebページを作成し、残りの.NETフレームワークは他のものを作成します。 WebページにASP.NETを使用するかどうかにかかわらず、ADO.NETは依然としてデータベース操作に使用するテクノロジです。正確であり、無関係の用語を混ぜ合わせないことを学ぶ。 – TomTom

+0

デバッグヘルプ(「なぜこのコードは動作しませんか?」)には、目的の動作、特定の問題またはエラー、および質問自体に再現するのに必要な最短コードが含まれている必要があります。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:最小、完全、および検証可能な例を作成する方法。 – TomTom

答えて

3

See this link

変更に。あなたは、列のいずれかに基づいて、所望のトップ行を選択する

cmd.CommandText = ";WITH CTE AS (SELECT TOP 5 * FROM PubTb) DELETE FROM CTE" 
+2

'TOP 5'は' ORDER BY'節を指定せずに無意味で危険です。5 **任意の**行は削除されますので、何も注文しません...... –

+0

'ORDER BYそれで?私のコラムの1つで注文しますか? – user1605859

+0

これを使用してもよろしいですか? 'llike:cmd.CommandText ='; CTEのままで(SELECT TOP 5 * PUBTB ORDER BY DtTimEnteredから)CTEから削除 ' – user1605859

1

使用subqueryにしたい場合にも、それを注文。そこCTEの必要がないように

DELETE FROM PubTb WHERE ID IN (SELECT TOP 5 ID FROM PubTb ORDER BY ID DESC) 
0

として を削除します。

DELETE From PubTb 
FROM PubTb original INNER JOIN 
(SELECT TOP 5 ID FROM PubTb /* you may order it */) topfive 
ON original.ID = topfive.ID 
関連する問題