2012-11-22 11 views
18

मुझे कुछ कॉलम द्वारा शीर्ष एन पंक्ति क्रम को हटाने के बारे में कुछ भ्रम हो रहा है।कुछ सॉर्टिंग (कॉलम 'द्वारा क्रमबद्ध) के साथ तालिका से शीर्ष-एन' पंक्तियां हटाएं

मेरे द्वारा बनाए गए एक उदाहरण यहां Example at fiddle

क्या इन प्रश्नों के साथ कुछ गलत है?

Delete from Table1 
where id IN (
    select top 3 id 
    from Table1 
    order by id desc 
) 

उत्तर

43

आप की आवश्यकता के बिना एक CTE उपयोग कर सकते हैं एक faster ordered delete करना है:

Delete Top(3) from Table1 order by id desc 

Delete Top(3) from Table1 
where id IN (select id from Table1 order by id desc) 

के बाद से mysql में सीमा कीवर्ड काम करता है बहुत अच्छी तरह से

+1

यह _THE_ उत्तर है ... धन्यवाद। –

9

सबसिलेक्ट को top 3 खंड जोड़ें शीर्ष 3 आईडी को पुनः प्राप्त करने के लिए एक अलग उप क्वेरी।

WITH T 
    AS (SELECT TOP 3 * 
     FROM Table1 
     ORDER BY id DESC) 
DELETE FROM T 
+1

कृपया एक 'आईएन' का उपयोग करने से बेहद सावधान रहें जो एक ही तालिका का संदर्भ देता है। मेरे पास 3 पंक्तियों को हटाने के लिए एक बहुत ही समान क्वेरी थी, लेकिन 'ऑर्डर बी' अलग था, और यह निश्चित रूप से 3 पंक्तियों को हटा नहीं पाया। मुझे अंतःस्थापितता का एहसास नहीं हुआ था। –

संबंधित मुद्दे