sql >> Databasteknik >  >> RDS >> Mysql

Hur hittar man serienummer utan lucka i mysql?

Hade mer av en pjäs:-

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 för det här:-

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



  1. Hur man undviker att infoga dubbletter av poster i SQL INSERT-fråga (5 enkla sätt)

  2. Kör en fråga baserad på flera kryssrutor

  3. Vilka är de 10 bästa funktionerna i Microsoft Access?

  4. Ansluta till en online MySQL-databas med VB.Net