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

Bagaimana menemukan celah dalam penomoran berurutan di mysql?

Perbarui

ConfexianMJS memberikan jauh lebih baik jawaban dalam hal kinerja.

Jawaban (tidak secepat mungkin)

Berikut versi yang berfungsi pada tabel dengan ukuran berapa pun (tidak hanya pada 100 baris):

SELECT (t1.id + 1) as gap_starts_at, 
       (SELECT MIN(t3.id) -1 FROM arrc_vouchers t3 WHERE t3.id > t1.id) as gap_ends_at
FROM arrc_vouchers t1
WHERE NOT EXISTS (SELECT t2.id FROM arrc_vouchers t2 WHERE t2.id = t1.id + 1)
HAVING gap_ends_at IS NOT NULL
  • gap_starts_at - id pertama di celah saat ini
  • gap_ends_at - id terakhir di celah saat 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. mysql - membuat mekanisme yang mirip dengan urutan Oracle

  2. perlu mengembalikan dua set data dengan dua klausa where yang berbeda

  3. SQL - Perbarui banyak catatan dalam satu kueri

  4. Menggunakan Paspor Dengan Sequelize dan MySQL

  5. Haruskah koneksi database tetap terbuka sepanjang waktu atau hanya dibuka saat dibutuhkan?