2012-10-08 15 views
15

czy istnieje polecenie SQL do usunięcia pierwszych X wierszy tabeli bazy danych?Usuń pierwsze X wiersze bazy danych

Mam tabelę bazy danych zawierającą niektóre informacje, ale bez wartości id lub auto-inkrementacji i program, który przetwarza pierwsze X wiersze tej tabela. Następnie te X wiersze muszą zostać usunięte. Więc średnia zapytania to:

DELETE FROM table WHERE something = value; 

tak, czy istnieje sposób zbudować kwerendę jak:

DELETE FROM table WHERE rownumber <= X; 

Próbowałem tego polecenia, ale nic się nie dzieje do bazy .. Czy masz jakaś wskazówka?

Odpowiedz

33

Zastosowanie LIMIT na własną kasowania:

DELETE FROM table WHERE condition LIMIT 10 

Lub, jeśli nie chcesz warunek

DELETE FROM table LIMIT 10 

pamiętać, że kolejność, w której wiersze zostaną usunięte jest niezdefiniowana - zależy to od twoja konfiguracja DBMS i indeksy tabel. Powinieneś dołączyć kod ORDER BY, aby usunięcie zostało wykonane w określonej kolejności, np. ORDER BY id ASC, aby najpierw usunąć najniższe identyfikatory.

Aby uzyskać więcej informacji, zobacz numer MySQL documentation for DELETE.

+1

Zachowaj ostrożność podczas wykonywania tej czynności. Kolejność wyboru może się zmienić, jeśli dodasz indeks lub coś podobnego. Serwer SQL najprościej wybierze, gdy nie doda klauzuli where. – Romo

+0

To prawda. Obowiązują standardowe wymagania "ORDER BY". Zmontowałem to, aby to odzwierciedlić. – Polynomial

+0

Dzięki za odpowiedź! Próbowałem tego i niestety działa tylko wtedy, gdy podano warunek. Więc teraz używam 'DELETE FROM table WHERE a_field> 0 LIMIT X;' To działa do tej pory. Dziękujemy :-) – coroner

Powiązane problemy