Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara mendapatkan ID pertama yang tidak digunakan di tabel?

Saya menamai tabel Anda 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

Kueri ini terdiri dari dua bagian.

Bagian pertama:

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

memilih 1 apakah tidak ada entri dalam tabel dengan id ini? .

Bagian kedua:

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

memilih id pertama dalam tabel yang tidak memiliki id berikutnya .

Kueri yang dihasilkan memilih paling sedikit dari dua nilai ini.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. tanggal mysql menunjukkan hasil hari ini/kemarin/minggu

  2. Masalah Kenaikan Otomatis di Mysql

  3. CodeIgniter:Audit SQL dari semua panggilan metode $this->db->query()?

  4. COALESCE di laravel

  5. Bagaimana cara memilih dari kolom DATETIME hanya menggunakan tanggal?