DELETE FROM student
WHERE ApplicationDateTime <> (SELECT max(ApplicationDateTime)
FROM student s2
WHERE s2.StudentID = student.StudentID)
टिप्पणियों में लंबी चर्चा को देखते हुए, कृपया निम्नलिखित पर ध्यान दें:
उपरोक्त कथन करेगा किसी भी डेटाबेस पर काम करें जो स्टेटमेंट के चलने के दौरान टेबल में किसी भी बदलाव की परवाह किए बिना स्टेटमेंट लेवल रीड कंसिस्टेंसी को ठीक से लागू करता है।
डेटाबेस जहां मैं निश्चित रूप से जानता हूं कि यह के साथ . भी सही ढंग से काम करता है तालिका में समवर्ती संशोधन:Oracle (जिसके बारे में यह प्रश्न है), पोस्टग्रेज, SAP हाना, फायरबर्ड (और संभवतः MySQL InnoDB का उपयोग करके)। क्योंकि वे सभी उस समय डेटा के सुसंगत दृश्य की गारंटी देते हैं जब कथन शुरू हुआ था। <>
बदलना करने के लिए <
उनके लिए कुछ भी नहीं बदलेगा (Oracle सहित जिसके बारे में यह प्रश्न है)
उपर्युक्त डेटाबेस के लिए, कथन नहीं है अलगाव स्तर के अधीन है क्योंकि प्रेत पढ़ता है या गैर-दोहराने योग्य रीड केवल एकाधिक के बीच हो सकता है कथन - एक एकल . के भीतर नहीं बयान।
डेटाबेस के लिए जो एमवीसीसी को ठीक से लागू नहीं करता है और समवर्ती प्रबंधन के लिए लॉकिंग पर भरोसा करता है (इस प्रकार समवर्ती लेखन पहुंच को अवरुद्ध करता है) यदि तालिका को समवर्ती रूप से अद्यतन किया जाता है तो यह वास्तव में गलत परिणाम उत्पन्न कर सकता है। उन लोगों के लिए <
. का उपयोग कर समाधान शायद जरूरत है।