次の問題 (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 フィールドを行の最大シーケンスに設定する必要があります。たとえば、行 ID 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
どんな助けでも大歓迎です。ありがとう。