41

いくつかの列で上位 N 行の順序を削除することに関して、いくつかの混乱があります。

ここに例を作成しました フィドルでの例

これらのクエリの何が問題になっていますか?

 Delete Top(3) from Table1 order by id desc

 Delete Top(3) from Table1 
 where id IN (select id from Table1 order by id desc)

mysqlでは limit キーワードが非常にうまく機能するため

4

2 に答える 2

86

CTE を使用すると、上位 3 つの ID を取得するための別のサブクエリを必要とせずに、より高速な順序付き削除を実行できます。

WITH T
     AS (SELECT TOP 3 *
         FROM   Table1
         ORDER  BY id DESC)
DELETE FROM T 
于 2012-11-22T08:11:22.240 に答える
11

top 3句を副選択に追加します。

Delete from Table1 
where id IN (
    select top 3 id 
    from Table1 
    order by id desc
)
于 2012-11-22T08:10:31.957 に答える