2013-04-16 25 views
45

ben satır daha az sayıda silmek için bu denedi nerede id = (y x)

bir tabloda id en 163 265 olan satırları silmek için bir SQL sorgusu çalıştırmak çalışıyorum

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

ama bir seferde 100 satır 's silmek için geldiğinde, herhangi bir sorgu ben de sorgunun bu tür kullanmaya çalışıyorum ama o

DELETE FROM `table` WHERE id IN (SELECT * FROM table WHERE id =) 
yürütülemedi am yukarıdaki yönteme benzer var mı

+1

müthiş teşekkür ederim! –

+0

bu durumda cevap olarak eklendi :) ait – leppie

+1

Olası kopyalar [SQL belirli bir Range içinde Kayıtları Sil] (http://stackoverflow.com/questions/8225036/sql-delete-records-within-a-specific-range) –

cevap

11

Sen BETWEEN kullanabilirsiniz ... Yukarıdaki eylem yapmak bana sorguyu söyle: kullanabileceğiniz, bir listeye dayalı silmeniz gerekirse

DELETE FROM table 
where id between 163 and 265 
96

IN:

delete from your_table 
where id in (value1, value2, ...); 
Eğer bir sorgunun sonucuna dayanarak silmek gerekiyorsa

, ayrıca IN kullanabilirsiniz:

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

Eğer bir değer aralığına dayalı silmeniz gerekirse

(alt sorgu yalnızca bir sütun dönmelidir dikkat edin), ya sen BETWEEN kullanın veya eşitsizlikleri kullanın:

delete from your_table 
where id between bottom_value and top_value; 

veya

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

teşekkür ederiz! Ben ARASINDA kullanmış ve Onun benim şartına başarıyla gerçekleştirildi. kullanışlı bu yanıt bulmak Eğer –

+4

@baluzapps, onu kabul;) – 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 

alın dize değeri silmek

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

Bu vurgulanýp ben 'silmek için doğru sözdizimi olduğunu sanmıyorum Ctrl + K –

2

bu deneyin: işe yaradı

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

cevap vermez 'ifadesi – WhatsThePoint

+1

vurarak kodunuzu biçimlendirmek misiniz sorusunu – ExDev

İlgili konular