Jak usunąć z tabeli, w której ID znajduje się na liście identyfikatorów?


91

jeśli mam listę identyfikatorów (1,4,6,7) i tabelę db, w której chcę usunąć wszystkie rekordy, w których identyfikator znajduje się na tej liście, jaki jest sposób, aby to zrobić?

Odpowiedzi:


168

Twoje pytanie prawie pisze w języku SQL:

DELETE FROM table WHERE id IN (1, 4, 6, 7)

@jayarjo: Jakakolwiek różnica byłaby prawdopodobnie nieistotna i nie sądzę, aby był jakikolwiek powód, dla którego usuwanie pojedynczo i tak byłoby bardziej wydajne.
Matti Virkkunen

Właśnie tam wydajność może uderzyć w wygodę. Na przykład mam już funkcje, które wykonują to jedna po drugiej. Ale gdyby była szansa na wzrost wydajności, mógłbym napisać dodatkowy kod, w przeciwnym razie prawdopodobnie nie będzie tego wart.
jayarjo

8
Jeden po drugim prawie na pewno byłby wolniejszy, z pewnością na Oracle lub PostgreSQL. Podział operacji SQL na wiele mniejszych operacji to świetny sposób na uzyskanie złej wydajności.
David Aldridge,

1
Okazało się, że 10000 pozycji w klauzuli In zajęło około 200 sekund, ale 1000 zajęło 3 sekundy (lub 30 sekund w znormalizowanym porównaniu). Rozmiar ma znaczenie.
ohmusama,

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.