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

मैं तालिका में पहली अप्रयुक्त आईडी कैसे प्राप्त करूं?

मैंने आपकी तालिका का नाम unused रखा है ।

SELECT  id
FROM    (
        SELECT  1 AS id
        ) q1
WHERE   NOT EXISTS
        (
        SELECT  1
        FROM    unused
        WHERE   id = 1
        )
UNION ALL
SELECT  *
FROM    (
        SELECT  id + 1
        FROM    unused t
        WHERE   NOT EXISTS
                (
                SELECT  1
                FROM    unused ti
                WHERE   ti.id = t.id + 1
                )
        ORDER BY
                id
        LIMIT 1
        ) q2
ORDER BY
        id
LIMIT 1

इस क्वेरी में दो भाग हैं।

पहला भाग:

SELECT  *
FROM    (
        SELECT  1 AS id
        ) q
WHERE   NOT EXISTS
        (
        SELECT  1
        FROM    unused
        WHERE   id = 1
        )

एक 1 का चयन करता है क्या इस id . के साथ तालिका में कोई प्रविष्टि नहीं है? ।

दूसरा भाग:

SELECT  *
FROM    (
        SELECT  id + 1
        FROM    unused t
        WHERE   NOT EXISTS
                (
                SELECT  1
                FROM    unused ti
                WHERE   ti.id = t.id + 1
                )
        ORDER BY
                id
        LIMIT 1
        ) q2

पहले 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. MySQL में टाइमस्टैम्प के लिए स्ट्रिंग

  2. क्या PHP पीडीओ दो परिणाम सेट ला सकता है? और यदि हाँ, तो बेहतर 1 परिणाम सेट या 1 से अधिक क्या है?

  3. जैसे ही AngularJs में डेटाबेस में परिवर्तन होता है, स्वचालित दृश्य अपडेट को कैसे कार्यान्वित करें?

  4. MySQL में अनुक्रमिक संख्या डालें

  5. ट्रिगर बनाने से पहले DELIMITER पर MySQL सिंटैक्स त्रुटि