sql >> Database teknologi >  >> RDS >> Mysql

Hvordan får jeg det første ubrugte ID i tabellen?

Jeg navngav din tabel ubrugt .

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

Denne forespørgsel består af to dele.

Den første del:

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

vælger en 1 er der ingen indgang i tabellen med dette id .

Anden del:

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

vælger et første id i tabellen, hvor der ikke er noget næste id .

Den resulterende forespørgsel vælger den mindste af disse to værdier.



  1. Hvorfor er der behov for UDFØR STRAKS her?

  2. Hvornår opdateres et tidsstempel (automatisk)?

  3. Indsætter en tid i mysql-databasen i java

  4. Sådan fungerer SHOW CHARACTER SET i MariaDB