2013-04-16 9 views
45

Próbuję uruchomić kwerendę SQL, aby usunąć wiersze z id użytkownika 163 do 265 w tabeliJak usunąć wiele wierszy w SQL, gdzie id = (x do y)

Próbowałem to usunąć mniejszą liczbę wierszy

DELETE FROM `table` WHERE id IN (264, 265) 

ale jeśli chodzi o usuwanie 100 wierszy naraz, czy istnieje kwerenda podobna do powyższej metody jestem również stara się korzystać z tego rodzaju zapytania, ale nie udało się go wykonać

DELETE FROM `table` WHERE id IN (SELECT * FROM table WHERE id =) 

Proszę mi powiedzieć zapytanie do powyższych działań ...

+1

niesamowite pracował dziękuję! –

+0

Dodano jako odpowiedź w tym przypadku :) – leppie

+1

Możliwy duplikat [SQL Delete Records w określonym zakresie] (http://stackoverflow.com/questions/8225036/sql-delete-records-within-a-specific-range) –

Odpowiedz

11

Można użyć BETWEEN:

DELETE FROM table 
where id between 163 and 265 
96

Jeśli trzeba usunąć na podstawie listy, można użyć IN:

delete from your_table 
where id in (value1, value2, ...); 

Jeśli trzeba usunąć na podstawie wyniku kwerendy, można również użyć IN:

delete from your_table 
where id in (select aColumn from ...); 

(Zauważ, że podzapytanie musi zwrócić tylko jedną kolumnę)

Jeśli trzeba usunąć na podstawie zakresu wartości, albo skorzystać BETWEEN lub użyć nierówności:

delete from your_table 
where id between bottom_value and top_value; 

lub

delete from your_table 
where id >= a_value and id <= another_value; 
+0

Dziękujemy! Użyłem BETWEEN i pomyślnie wykonałem swoje wymagania. –

+4

@baluzapps Jeśli uważasz, że ta odpowiedź jest przydatna, zaakceptuj ją;) – Barranka

-3
CREATE PROC [dbo].[sp_DELETE_MULTI_ROW]  
@CODE XML 
,@ERRFLAG CHAR(1) = '0' OUTPUT  

AS   

SET NOCOUNT ON 
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 

DELETE tb_SampleTest 
    WHERE 
     CODE IN(
      SELECT Item.value('.', 'VARCHAR(20)') 
      FROM @CODE.nodes('RecordList/ID') AS x(Item) 
      ) 

IF @@ROWCOUNT = 0 
    SET @ERRFLAG = 200 

SET NOCOUNT OFF 

wartość ciągu Get usuwać

<RecordList> 
    <ID>1</ID> 
    <ID>2</ID> 
</RecordList> 
+0

To nie odpowiada na pytanie –

2

Spróbuj tego:

DELETE FROM `table` WHERE id >=163 and id<= 265 
0
Delete Id from table where Id in (select id from table) 
+2

Czy możesz sformatować kod, podświetlając go i naciskając Ctrl + K – WhatsThePoint

+1

Nie sądzę, że jest to poprawna składnia dla 'delete 'instrukcja – ExDev

Powiązane problemy