sql >> Database >  >> RDS >> Mysql

Hoe krijg ik de eerste ongebruikte ID in de tabel?

Ik heb je tabel unused genoemd .

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

Deze zoekopdracht bestaat uit twee delen.

Het eerste deel:

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

selecteert een 1 is er geen vermelding in de tabel met deze id .

Het tweede deel:

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

selecteert een eerste id in de tabel waarvoor geen volgende id . is .

De resulterende zoekopdracht selecteert de minste van deze twee waarden.



  1. echo json-array in een phpMyAdmin-kolom VIA PHP

  2. installeer zowel mysql als mysqlnd op ubuntu 12.04

  3. HTML-tags verwijderen in PostgreSQL

  4. Gebruik van 'OR' tussen HAVING en WHERE-clausule in MySQL?