【发布时间】:2026-01-21 11:05:02
【问题描述】:
几天来,我一直在努力尝试为以下问题编写查询(MySQL 的新手)。
我有一个表 A,其中包含以下数据
id, r1, r2, r3, r4, r5, r6, r7, r8, r9, max
1, 1, 2, 3, 6, 7, 8, 9, 0
2, 1, 3, 4, 5, 6, 7, 8, 0
3, 2, 4, 5, 7, 9, 11, 12, 0
我需要将 max 字段设置为行中的最大序列。例如,第 1 行的最大序列为 4 (6,7,8,9),因此最大字段将显示 4。行中的数字始终从小到大(从左到右)列出。
我怀疑这会是类似的东西;
SET @r:=0
SET @s:=0
IF(r1 + 1 = r2, IF(@r > @s, @s:=@r, @r:= @r + 1),
IF(r2 + 1 = r3, IF(@r > @s, @s:=@r, @r:= @r + 1),
IF(r3 + 1 = r4, IF(@r > @s, @s:=@r, @r:= @r + 1),
IF(r4 + 1 = r5, IF(@r > @s, @s:=@r, @r:= @r + 1),`
等等...但它似乎不起作用,因为增量仅适用于每行??
FOR i <= count(column)
IF count > sequence
THEN sequence = count
ELSE count ++
NEXT i
任何帮助将不胜感激。谢谢。
【问题讨论】:
-
不清楚你所说的最大序列到底是什么意思。它是最大连续运行吗?第二排,应该是什么,6?第三行应该是 3?
-
所以在一行中你有 1,2,3,5,6,7,8,9 - 从这里你可以看到你有两个完整的序列(1 到 3)和(5 到9),但我想得到的是最长的不间断序列,在这种情况下,(5 到 9)= 5(包括 5)。我想您可以将其视为序列的最大计数?如果这有意义吗?
标签: mysql multiple-columns sequential