Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để tìm khoảng trống trong đánh số tuần tự trong mysql?

Cập nhật

ConfexianMJS đã cung cấp tốt hơn nhiều câu trả lời về hiệu suất.

Câu trả lời (không nhanh nhất có thể)

Đây là phiên bản hoạt động trên bảng có kích thước bất kỳ (không chỉ trên 100 hàng):

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 đầu tiên trong khoảng cách hiện tại
  • gap_ends_at - id cuối cùng trong khoảng trống hiện tại


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách lấy tháng từ ngày trong MySQL

  2. Lệnh MySQL:Cheat Sheet của các truy vấn MySQL phổ biến

  3. Cách tạo và thực thi các hàm và thủ tục được lưu trữ trong MySQL

  4. Còn gì nhanh hơn, CHỌN DISTINCT hoặc GROUP BY trong MySQL?

  5. Cách tìm số ngày giữa hai ngày trong MySQL