2013-08-09 4 views
5

एक प्रोग्रामिंग त्रुटि इस तालिका में समान पंक्तियों के एकाधिक प्रविष्टियों का कारण बनती है। मुझे पता है कि स्कीमा में बाधाएं सम्मिलन को रोक सकती हैं।मेरी एसक्यूएल तालिका

screenshot

मैं सभी लेकिन नवीनतम (उच्चतम आईडी) प्रत्येक दौर/संख्या जोड़ी के लिए पंक्ति को हटाने के लिए एक तरह से खोजने की कोशिश कर रहा हूँ। मैं निश्चित रूप से यह स्क्रिप्ट कर सकता था लेकिन मुझे आश्चर्य हुआ कि शुद्ध एसक्यूएल में ऐसा करने का कोई तरीका है या नहीं?

+0

यह MySQL 5.1.70-CLL – jerrygarciuh

उत्तर

7

आम तौर पर आप कर सकते हैं:

delete from your_table 
where id not in 
(
    select max(id) from your_table 
    group by user, round, date, number 
) 

MySQL में आप एक ही मेज आप से चयन कर रहे हैं से नहीं हटा सकते। लेकिन आप इस तरह से एक और सबक्वेरी साथ MySQL चाल कर सकते हैं:

delete from your_table 
where id not in 
(
    select * from 
    (
     select max(id) from your_table 
     group by user, round, date, number 
    ) x 
) 
+0

अच्छा चाल है। धन्यवाद –

+0

धन्यवाद! मैं सबक की सराहना करता हूं! – jerrygarciuh

+0

कृपया ध्यान दें कि दो (या अधिक) रिकॉर्ड समान MAX मान साझा कर सकते हैं। – wildplasser

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