获取具有升序值的行数,如 1,2,3,直到发生中断,如表中的 1,2,3,7,8,9,10

Posted

技术标签:

【中文标题】获取具有升序值的行数,如 1,2,3,直到发生中断,如表中的 1,2,3,7,8,9,10【英文标题】:Get count of rows having values in ascending sequence like 1,2,3 until a break occurs like 1,2,3,7,8,9,10 from table 【发布时间】:2021-11-27 12:54:36 【问题描述】:

ip_available 表数据为:

ip_address parent
10010010024 1987
10010010026 1987
10010010027 1987
10010010033 1987
10010010034 1987
10010010035 1987
10010010036 1987
10010010037 1987
10010010090 2010

类似地,还有更多具有其他父值的 ip_addresses

我想要这样的结果集

ip_address_min parent count
10010010024 1987 3
10010010033 1987 5
10010010090 2010 1

数据库是 mysql 每个常规序列都应该计数,无论父值是否重复。

【问题讨论】:

这是Gaps&Island-Problem。如果您可以指定您的 MySQL 版本(例如,如果您使用 MySQL 8 或不使用),将会有所帮助。 【参考方案1】:

更多细节会在下次有所帮助,例如包括您的表格结构。 但我相信这会对你有所帮助。

SELECT MIN(ip_address) as ip_address_min, MIN(parent) as parent, COUNT(ip_address) as count 
FROM ip_available
GROUP BY LEFT(ip_address,length(ip_address)-1);

https://www.db-fiddle.com/f/5dw4hvSfLm5idNjknrj6YX/0

【讨论】:

如果数字跨越不同的 10 位(例如 ....39、.....40),这将不起作用。 @slashroot - 谢谢,它成功了!

以上是关于获取具有升序值的行数,如 1,2,3,直到发生中断,如表中的 1,2,3,7,8,9,10的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jquery 或 javascript 计算具有特定值的行数?

获取专门的行数

选择具有相同值的上次更新的行

在 Hbase 中查找具有空值的行数

计算其中的行数以找到特定值的行数[重复]

如何获取表中具有空值的行,并且没有任何关于任何列名的行?