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

क्या LIMIT के साथ IN का कोई विकल्प है?

DELETE FROM Highscore ORDER BY value DESC LIMIT 10,5

वह आखिरी 5 कोई भी संख्या हो सकती है। यदि आप इसे हर बार स्कोर जोड़ने पर चलाते हैं, तो आप इसे 1 . के रूप में प्राप्त कर सकते हैं . त्रुटि के अधिक मार्जिन की अनुमति देने के लिए, 10 . का उपयोग करें ।

संपादित करें:क्षमा करें, स्पष्ट रूप से आप यहां ऑफ़सेट का उपयोग नहीं कर सकते हैं। उस स्थिति में:

DELETE FROM Highscore WHERE value < (SELECT value FROM Highscore ORDER BY value DESC LIMIT 10,1)

यदि यह आपको ऐसा नहीं करने देता (अपडेट/डिलीट के रूप में उसी तालिका से चयन करें), कोशिश करें:

SET @tmp = (SELECT value FROM Highscore ORDER BY value DESC LIMIT 10,1)
DELETE FROM Highscore WHERE value < @tmp

फिर से संपादित करें:जैसा कि टिप्पणी में बताया गया है, समस्याएँ उत्पन्न होती हैं यदि 11 वां मान 10 वें के बराबर है। कोशिश करें:

SET @id = (SELECT scoreId FROM Highscore ORDER BY value DESC, scoreId DESC LIMIT 10,1), @val = (SELECT value FROM Highscore ORDER BY value DESC LIMIT 10,1)
DELETE FROM Highscore WHERE value <= @val AND scoreId < @id

पहले वेरिएबल में ScoreId द्वारा ऑर्डर करना यह सुनिश्चित करता है कि जब समान स्कोर वाले कई हों, तो 10 से कम नहीं बचेगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या प्रविष्टि पहले मौजूद है या नहीं, यह जाँचने की तुलना में तेजी से एक नई डेटाबेस प्रविष्टि सम्मिलित कर रहा है?

  2. वर्ष () उदाहरण – MySQL

  3. PHP और MySQL डायनेमिक पेजों के लिए पेज व्यू गिनने का सबसे अच्छा तरीका है

  4. एक mysql डेटाबेस में कितनी टेबल बनाई जा सकती हैं?

  5. एंटिटी फ्रेमवर्क के साथ MySQL में ऑटो इंक्रीमेंटेड फील्ड में एक विशिष्ट आईडी डालें 5