这就是我们所说的少校
rownum
乱劈。假设您的表名为t,值列名为val,这将给出您要查找的结果。
SELECT val /* step 6 */
FROM
(SELECT A.val,
CASE
WHEN A.val <> IFNULL(B.val,-1) THEN @q:=0 /* step 4 */
ELSE @q:=@q+1 /* step 4 */
END AS seq /* step 4 */
FROM
(SELECT @q:=0)r,
(SELECT /* step 1 */
@a:=@a+1 AS n, /* step 1 */
val /* step 1 */
FROM (SELECT @a:= 0)r, T /* step 1 */
ORDER BY val) A /* step 1 */
LEFT JOIN
(SELECT /* step 2, like step 1 */
@b:=@b+1 AS n,
val
FROM (SELECT @b:= 0)r, T
ORDER BY val) B
ON B.n = A.n-1 /* step 3 */
ORDER BY seq,val) s /* step 5 */
-
数量)
-
那我们需要两个,带着
-
那我们需要把他们联合起来
行=要比较的行1偏移
相邻val列。
-
然后我们需要应用一个序列
序号1,2,3到1,然后是2,
等。
-
然后我们需要按顺序排序
瓦尔。
-
那我们得把序列藏起来。
瞧。。。。