SQL जहाँ id = (x से y) में कई पंक्तियों को हटाने के लिए कैसे


86

मैं एक तालिका में आईडी के 163 से 265 के साथ पंक्तियों को हटाने के लिए एक SQL क्वेरी चलाने की कोशिश कर रहा हूं

मैंने कम पंक्तियों को हटाने के लिए यह कोशिश की

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

लेकिन जब एक बार में 100 पंक्तियों को हटाने की बात आती है, तो क्या उपरोक्त विधि के समान कोई क्वेरी है जो मैं इस तरह के क्वेरी का उपयोग करने की कोशिश कर रहा हूं लेकिन इसे निष्पादित करने में विफल रहा

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

कृपया मुझे उपरोक्त कार्रवाई करने के लिए प्रश्न बताएं ...



यह उपर्युक्त में से एक डुप्लिकेट नहीं है ... दूसरे का संबंध संप्रदायों में विलोपन से है, इसमें प्रश्न संभव गैर-निरंतर आईडी की आईडी हटाने की है, आईडी की एक सूची है ...
मराक मारे

जवाबों:


186

यदि आपको किसी सूची के आधार पर हटाने की आवश्यकता है, तो आप उपयोग कर सकते हैं IN:

DELETE FROM your_table
WHERE id IN (value1, value2, ...);

यदि आपको क्वेरी के परिणाम के आधार पर हटाने की आवश्यकता है, तो आप इसका उपयोग भी कर सकते हैं IN:

DELETE FROM your_table
WHERE id IN (select aColumn from ...);

(ध्यान दें कि उपशम को केवल एक कॉलम वापस करना होगा)

यदि आपको मानों की श्रेणी के आधार पर हटाने की आवश्यकता है, तो आप BETWEENया तो असमानताओं का उपयोग करते हैं या:

DELETE FROM your_table
WHERE id BETWEEN bottom_value AND top_value;

या

DELETE FROM your_table
WHERE id >= a_value AND id <= another_value;

1
धन्यवाद! मैंने अपनी आवश्यकता के अनुसार सफलतापूर्वक इसका उपयोग किया है।
बालू जाप्स

10
@baluzapps यदि आपको यह उत्तर उपयोगी लगता है, तो इसे स्वीकार करें;)
बैरनका

इससे संबंधित एक प्रश्न: क्या होगा यदि मेरे पास समग्र कुंजी है?
मयूर बेलदार

1
@MayurBeldar: यदि आपके पास कोई नया प्रश्न है, तो इसे एक प्रश्न के रूप में पोस्ट करें , टिप्पणी के रूप में नहीं
बैरंका

21

आप उपयोग कर सकते हैं BETWEEN:

DELETE FROM table
where id between 163 and 265


1
Delete Id from table where Id in (select id from table)

2
क्या आप कृपया अपने कोड को हाइलाइट करके और Ctrl + K
WhatsThePoint

4
मुझे नहीं लगता कि यह एक deleteकथन के लिए सही वाक्यविन्यास है
Fabrizio

-6
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

स्ट्रिंग मान हटाएं

<RecordList>
    <ID>1</ID>
    <ID>2</ID>
</RecordList>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.