मेरे पास 1000 रिकॉर्ड वाले डेटाबेस हैं। मैं एक SQL कथन बनाने की कोशिश कर रहा हूं ताकि यदि रिकॉर्ड की संख्या 1000 से ऊपर बढ़ती है, तो सबसे पुराने रिकॉर्ड हटा दिए जाते हैं (यानी 1000 से ऊपर के नए रिकॉर्ड 'पुराने रिकॉर्ड को प्रतिस्थापित करें')। मैं SQLite का उपयोग कर रहा हूं, लेकिन मुझे लगता है कि सामान्य SQL वाक्यविन्यास यहां फिट होगा।डेटाबेस से पुराने रिकॉर्ड हटाएं
उत्तर
आप एक स्वत: वेतन वृद्धि क्षेत्र का उपयोग करते हैं, आप आसानी से सबसे पुराने 100 रिकॉर्ड हटाने के लिए इस लिख सकते हैं:
DELETE FROM mytable WHERE id IN (SELECT id FROM mytable ORDER BY id ASC LIMIT 100)
या, अगर ऐसी कोई क्षेत्र मौजूद है, ROWID
का उपयोग करें:
DELETE FROM mytable WHERE ROWID IN (SELECT ROWID FROM mytable ORDER BY ROWID ASC LIMIT 100)
या, केवल नवीनतम 1000 के रिकॉर्ड को छोड़ने के लिए:
DELETE FROM mytable WHERE ROWID IN (SELECT ROWID FROM mytable ORDER BY ROWID DESC LIMIT -1 OFFSET 1000)
धन्यवाद, लेकिन मुझे एक की आवश्यकता है ... सीमा -1 ऑफ़सेट 1000 – Seven
मैं इसका उपयोग करने के बारे में सोच रहा था, लेकिन क्या MySQL पहले हटाए गए आईडी का उपयोग नहीं करेगा, इसलिए यह अब और काम नहीं करेगा? चूंकि आईडी = 1 उपलब्ध हो जाएगा, आईडी = 1 के साथ एक नई पंक्ति बनाई जाएगी तो पहले हटा दिया जाएगा ..? – NaturalBornCamper
यह मानते हुए कि अपनी मेज एक प्राथमिक है कुंजी और यह दर्शाता है जब रिकॉर्ड डाला गया था) एक टाइमस्टैम्प के साथ एक स्तंभ है, तो आप एक प्रश्न
delete from tableToDeleteFrom
where tablePK in
(select tablePK
from tableToDeleteFrom
where someThresholdDate <= @someThresholdDate)
की तर्ज पर सभी रिकॉर्ड पहले रिकॉर्ड (न्यूनतम/अधिकतम आईडी) आप उपयोग कर सकते हैं, सिवाय इसके उपयोग को नष्ट कर सकते हैं:
SET @ls AS INT
SELECT @ls = MIN(id) FROM DATA
DELETE FROM DATA WHERE id <> @ls
क्या यह वास्तव में प्रश्न का उत्तर देता है? – voromax
- 1. तालिका से रिकॉर्ड कैसे हटाएं?
- 2. डेटाबेस से कैसे हटाएं?
- 3. ORMLITE से रिकॉर्ड कैसे हटाएं?
- 4. एक दिन से पुराने आइटम हटाएं - SQL सर्वर
- 5. एक साथ कई तालिकाओं से रिकॉर्ड हटाएं?
- 6. MySQL बड़े डेटाबेस से डुप्लिकेट हटाएं त्वरित
- 7. एक्स घंटे से पुराने फ़ाइलों को कैसे हटाएं
- 8. जादुई रिकॉर्ड: एकाधिक डेटाबेस
- 9. डेटाबेस से एचटीएमएल इकाइयों को हटाएं
- 10. MySQL पुराने रिकॉर्ड सम्मिलित करने का समय प्राप्त करें?
- 11. SQL तालिका से सभी डुप्लिकेट रिकॉर्ड कैसे हटाएं?
- 12. एमएसएसक्यूएल रिकॉर्ड दिनांक/समय ऑटो हटाएं
- 13. जीक्यूएल का उपयोग कर रिकॉर्ड कैसे हटाएं?
- 14. ऑरैकल डेटाबेस से यादृच्छिक रूप से रिकॉर्ड कैसे प्राप्त करें?
- 15. MySQL में सभी अनाथ रिकॉर्ड कैसे हटाएं?
- 16. SQL सर्वर में डुप्लिकेट रिकॉर्ड हटाएं?
- 17. SQL क्वेरी दो साल से अधिक पुराने रिकॉर्ड हटाने के लिए
- 18. गिट फ़ाइल के सबसे पुराने संशोधन को हटाएं
- 19. रुबी के पुराने संस्करणों को हटाएं (विंडोज़ पर)
- 20. एकाधिक तालिकाओं से हटाएं (linq से sql)
- 21. गतिशील रूप से नए सक्रिय रिकॉर्ड मॉडल और डेटाबेस टेबल
- 22. मैं एक मोंगो डेटाबेस से दूसरे में रिकॉर्ड कैसे डालूं?
- 23. फैक्टरी गर्ल/कैपिबरा डेटाबेस मध्य परीक्षण से रिकॉर्ड हटाना?
- 24. एमएस एक्सेस डेटाबेस से यादृच्छिक रिकॉर्ड कैसे प्राप्त करें
- 25. mysql डेटाबेस से केवल डुप्लिकेट रिकॉर्ड का चयन करें
- 26. LINQ से इकाइयों को रिकॉर्ड
- 27. X दिनों/सप्ताह पुराने
- 28. SQLite डेटाबेस तालिका से सभी तालिका पंक्तियां हटाएं
- 29. लाखों रिकॉर्ड वाले डेटाबेस से पहले 'एन' रिकॉर्ड का चयन कैसे करें?
- 30. FOSUserBundle: पुराने पासवर्ड/पुराने डीबी संरचना से माइग्रेशन
यदि आप कुछ तालिका स्कीमा विवरण शामिल करते हैं तो आपको अधिक उत्तर मिल सकते हैं। – serg10
आप अधिक जानकारी प्रदान करना चाहते हैं। जैसा कि आपके पास कॉलम पर टाइमस्टैम्प है? क्या आईडी एक GUID या ऑटो वृद्धि है? सभी पुरानी एक्स तारीख को हटाने का आपका लक्ष्य क्या है या क्या 1000 रिकॉर्ड की सीमा है? या इन अभिलेखों को हटाने का कारण क्या है? हम तब आपके प्रश्न का बेहतर उत्तर दे सकते हैं। –
ओह और आपका प्राथमिक कुंजी फ़ील्ड क्या है? या आप भी एक है? –