MySql查询连续号码段,存在断点,求MySql解法。

见过Oracle解法,现在用MySql不知道如何解决。题目如下:
我有一个表结构,
fphm,kshm
2014,00000001
2014,00000002
2014,00000003
2014,00000004
2014,00000005
2014,00000007
2014,00000008
2014,00000009
2013,00000120
2013,00000121
2013,00000122
2013,00000124
2013,00000125

(第二个字段内可能是连续的数据,可能存在断点。)

怎样能查询出来这样的结果,查询出连续的记录来。
就像下面的这样?
2014,00000001,00000005
2014,00000007,00000009
2013,00000120,00000122
2013,00000124,00000125

4个回答

注意改一下你的数据库表名及字段名

select res.id,min(network_code),max(network_code),res.num from 
( SELECT id,network_code,network_code-@i:=@i+1 as num from business_declare,(select @i:=0) as x ORDER BY network_code ) as res GROUP BY res.num 

MySQL优化三大方向

① 优化MySQL所在服务器内核(此优化一般由运维人员完成)。
② 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进行参数调整。
③ 对SQL语句以及表优化。
MySQL参数优化

1:MySQL 默认的最大连接数为 100,可以在 mysql 客户端使用以下命令查看
mysql> show variables like 'max_connections';
2:查看当前访问Mysql的线程
mysql> show processlist;
3:设置最大连接数
mysql>set globle max_connections = 5000;
最大可设置16384,超过没用
4:查看当前被使用的connections
mysql>show globle status like 'max_user_connections'

guokeewater
guokeewater 兄弟 人家问的不是这个问题
大约 2 年之前 回复

mysql不太熟悉,用mssql写的,参考下:
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([fphm] NVARCHAR(20),[kshm] nvarchar(28))
Insert #T
select '2014',N'00000001' union all
select '2014',N'00000002' union all
select '2014',N'00000003' union all
select '2014',N'00000004' union all
select '2014',N'00000005' union all
select '2014',N'00000007' union all
select '2014',N'00000008' union all
select '2014',N'00000009' union all
select '2013',N'00000120' union all
select '2013',N'00000121' union all
select '2013',N'00000122' union all
select '2013',N'00000124' union all
select '2013',N'00000125'
Go
--测试数据结束
SELECT fphm,
MIN(kshm),
MAX(kshm)
FROM
(SELECT *, ROW_NUMBER() OVER (ORDER BY kshm) - kshm AS rn FROM #T) t
GROUP BY fphm,
rn
ORDER BY t.rn DESC

图片说明

5C phpfastcginginx 务器做过路由映射,外网的8067端口映射到内网的80端口,但是通过 SERVER_PORT拿到的还是...

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问