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

क्या अंतिम सम्मिलित पंक्ति को खोजने के लिए SELECT MAX(id) आदि करना वैचारिक रूप से सही है?

यह व्यक्तिपरक लगता है, लेकिन मैं कहूंगा कि नहीं, यह अवधारणात्मक रूप से सही नहीं है, क्योंकि:

  • आप सबसे हाल ही में डाली गई पंक्ति चाहते हैं
  • लेकिन आपकी क्वेरी अधिकतम id को देखती है मूल्य

हां, मैक्स आईडी और सबसे हाल के इंसर्ट के बीच कुछ संबंध है, लेकिन निम्नलिखित पर विचार करें:

  • क्या होगा यदि सबसे हाल ही में डाली गई पंक्ति हटा दी गई हो?

MySQL पर उत्तर दें:आपको अलग-अलग परिणाम मिलते हैं। ध्यान दें कि इसके विफल होने के लिए मल्टीथ्रेडिंग या कई प्रक्रियाओं की भी आवश्यकता नहीं है। ऐसा इसलिए है क्योंकि वे दो अलग-अलग चीजें हैं (जो वास्तव में अक्सर एक ही परिणाम उत्पन्न कर सकते हैं)।

select max(id) from <tablename>

बनाम

select last_insert_id()

(लगता है कि कौन सा सही है।)

@Dems ने बताया कि ओपी अस्पष्ट है। मैं अपना मुख्य बिंदु स्पष्ट करूंगा:

हम तीन अलग-अलग सूचनाओं के बारे में बात कर रहे हैं:

  • अधिकतम id मूल्य
  • id हाल ही में सम्मिलित की गई पंक्ति की, किसी सत्र के लिए विशिष्ट
  • id पंक्ति की सबसे हाल ही में तालिका में डाली गई (सत्र की परवाह किए बिना)

खतरनाक बात यह है कि कभी-कभी, एक के लिए पूछताछ दूसरे के लिए सही उत्तर देगी -- लेकिन हमेशा नहीं



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. java.sql.SQLException पैरामीटर सूचकांक सीमा से बाहर है (1> मापदंडों की संख्या, जो 0 है)

  2. जावा टूल के लिए LINQ

  3. MySQL 5.6 DATETIME मिलीसेकंड/माइक्रोसेकंड स्वीकार नहीं करता

  4. MySQL में बैच इंसर्ट कैसे करें

  5. MySQL से MS SQL में प्रतिकृति