2012-11-22 10 views

Odpowiedz

43

można użyć CTE zrobić faster ordered delete bez potrzeby oddzielne pod-zapytanie, aby pobrać 3 najlepsze identyfikatory.

WITH T 
    AS (SELECT TOP 3 * 
     FROM Table1 
     ORDER BY id DESC) 
DELETE FROM T 
+1

To jest _THE_ odpowiedź ... Dzięki. –

9

Dodaj klauzuli top 3 do podselekcji:

Delete from Table1 
where id IN (
    select top 3 id 
    from Table1 
    order by id desc 
) 
+1

Proszę być bardzo ostrożnym przy użyciu 'IN', które odwołuje się do tej samej tabeli. Miałem bardzo podobne zapytanie do usunięcia 3 wierszy, ale "ORDER BY" było inne i na pewno nie usunęło 3 wierszy. Nie zdawałem sobie sprawy z wzajemnych powiązań. –

Powiązane problemy