sql >> Databáze >  >> RDS >> Mysql

Jak získám první nepoužité ID v tabulce?

Pojmenoval jsem vaši tabulku 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

Tento dotaz se skládá ze dvou částí.

První část:

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

vybere 1 v tabulce není žádný záznam s tímto id .

Druhá část:

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

vybere první id v tabulce, pro kterou není žádné další id .

Výsledný dotaz vybere nejmenší z těchto dvou hodnot.



  1. Jak zjistit věk v letech, měsících a dnech pomocí Oracle

  2. Špatný handshake nebo ECONNRESET Azure Mysql Nodejs

  3. Získání pořadí řádku v dotazu mysql

  4. Jak mohu změnit původní cenu na stránce produktu OpenCart?