Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

सबसे हाल के रिकॉर्ड को छोड़कर सभी रिकॉर्ड हटाएं?

DELETE FROM student
WHERE ApplicationDateTime <> (SELECT max(ApplicationDateTime) 
                              FROM student s2
                              WHERE s2.StudentID  = student.StudentID)

टिप्पणियों में लंबी चर्चा को देखते हुए, कृपया निम्नलिखित पर ध्यान दें:

उपरोक्त कथन करेगा किसी भी डेटाबेस पर काम करें जो स्टेटमेंट के चलने के दौरान टेबल में किसी भी बदलाव की परवाह किए बिना स्टेटमेंट लेवल रीड कंसिस्टेंसी को ठीक से लागू करता है।

डेटाबेस जहां मैं निश्चित रूप से जानता हूं कि यह के साथ . भी सही ढंग से काम करता है तालिका में समवर्ती संशोधन:Oracle (जिसके बारे में यह प्रश्न है), पोस्टग्रेज, SAP हाना, फायरबर्ड (और संभवतः MySQL InnoDB का उपयोग करके)। क्योंकि वे सभी उस समय डेटा के सुसंगत दृश्य की गारंटी देते हैं जब कथन शुरू हुआ था। <> बदलना करने के लिए < उनके लिए कुछ भी नहीं बदलेगा (Oracle सहित जिसके बारे में यह प्रश्न है)

उपर्युक्त डेटाबेस के लिए, कथन नहीं है अलगाव स्तर के अधीन है क्योंकि प्रेत पढ़ता है या गैर-दोहराने योग्य रीड केवल एकाधिक के बीच हो सकता है कथन - एक एकल . के भीतर नहीं बयान।

डेटाबेस के लिए जो एमवीसीसी को ठीक से लागू नहीं करता है और समवर्ती प्रबंधन के लिए लॉकिंग पर भरोसा करता है (इस प्रकार समवर्ती लेखन पहुंच को अवरुद्ध करता है) यदि तालिका को समवर्ती रूप से अद्यतन किया जाता है तो यह वास्तव में गलत परिणाम उत्पन्न कर सकता है। उन लोगों के लिए < . का उपयोग कर समाधान शायद जरूरत है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle में डेटाटाइम प्रारूप तत्वों की सूची

  2. सी # - ओरेकल लंबे कच्चे प्रकार का मूल्य कैसे प्राप्त करें?

  3. MYSQL परिणाम में संख्याओं को शब्दों में बदलना! क्वेरी का उपयोग करना

  4. Oracle अनुक्रमणिका अशक्त स्तंभ मान कब करता है?

  5. Oracle:PL/SQL का उपयोग करके मुद्रा राशि को शब्दों में बदलें