gpt4 book ai didi

mysql - 如何在mysql中查找无间隙的序列号?

转载 作者:可可西里 更新时间:2023-11-01 08:33:40 25 4
gpt4 key购买 nike

考虑一个包含列 serialnumber 的表 productSerialnumber。此列采用产品的单个序列号。

产品A的序列号从101到109,然后是111到119,139到150,例如序列号110和120-138不可用

我想要一个查询或可以返回连续序列号集的东西。例如结果将是

from       to 
======= ====
101 109
111 119
139 150

要考虑的是该表具有超过一百万行的庞大数据集。

我们将不胜感激任何帮助

最佳答案

有更多的发挥:-

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 在这里:-

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

关于mysql - 如何在mysql中查找无间隙的序列号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19222589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com