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

Làm thế nào để tìm số sê-ri không có khoảng trống trong mysql?

Có thêm một vở kịch:-

SELECT MIN(aFirstSerial), MAX(aLastSerial)
FROM
(
    SELECT @FirstSerial:=IF(productSerialnumber = @LastSerial + 1, IF(@FirstSerial = 0, productSerialnumber, @FirstSerial), productSerialnumber) AS aFirstSerial, 
        @RangeNum:=IF(productSerialnumber = @LastSerial + 1, @RangeNum, @RangeNum + 1) AS aRangeNum, 
        @LastSerial := productSerialnumber AS aLastSerial
    FROM
    (
        SELECT productSerialnumber
        FROM Product
        ORDER BY productSerialnumber
    ) Sub1
    CROSS JOIN (SELECT @PrevSerial:=0, @RangeNum:=0, @FirstSerial:=0, @LastSerial:=0) Sub2
) Sub3
GROUP BY aRangeNum

SQL Fiddle cho nó ở đây:-

http://sqlfiddle.com/#!2/5cbc2/12



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Quyền truy cập bị từ chối đối với người dùng 'root' @ 'localhost' với PHPMyAdmin

  2. tiếp theo với cơ sở dữ liệu postgres không hoạt động sau khi di chuyển từ mysql

  3. pdo lastInsertId trả về không (0)

  4. Tôi có thể chạy tệp sql trên phiên bản Google Cloud Sql của mình bằng lệnh gcloud sql không

  5. Tại sao bạn không nên sử dụng DISTINCT khi bạn có thể sử dụng GROUP BY?