Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да получа първия неизползван ID в таблицата?

Нарекох вашата таблица 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. CakePHP заявка най-близката географска ширина и дължина от базата данни

  2. MySQL:Групиран първичен ключ с InnoDB

  3. Laravel 8 - Не може да се намери драйвер:Illuminate\Database\QueryException не може да намери драйвер (SQL:изберете * от `списък`)

  4. jenkins се проваля при рестартиране на моя sql sudo:не присъства tty и не е посочена програма askpass Съжаляваме, опитайте отново.

  5. Начин да видите заявка, след като параметрите са приложени?