gpt4 book ai didi

sql - 如何在 MySQL 中进行连续分组?

转载 作者:可可西里 更新时间:2023-11-01 06:45:28 24 4
gpt4 key购买 nike

如何在 MySQL 中返回有效的“连续”GROUP BY。换句话说,一个遵循记录集顺序的 GROUP BY?

例如,SELECT MIN(col1), col2, COUNT(*) FROM table GROUP BY col2 ORDER BY col1 来自下表,其中 col1 是一个唯一的有序索引:

1    a2    a3    b4    b5    a6    a

返回:

1    a    43    b    2

但我需要返回以下内容:

1    a    23    b    25    a    2

最佳答案

使用:

   SELECT MIN(t.id) 'mi', 
t.val,
COUNT(*)
FROM (SELECT x.id,
x.val,
CASE
WHEN xt.val IS NULL OR xt.val != x.val THEN
@rownum := @rownum+1
ELSE
@rownum
END AS grp
FROM TABLE x
JOIN (SELECT @rownum := 0) r
LEFT JOIN (SELECT t.id +1 'id',
t.val
FROM TABLE t) xt ON xt.id = x.id) t
GROUP BY t.val, t.grp
ORDER BY mi

这里的关键是创建一个允许分组的人工值。

之前更正了Guffa的回答:

   SELECT t.id, t.val
FROM TABLE t
LEFT JOIN TABLE t2 on t2.id + 1 = t.id
WHERE t2.val IS NULL
OR t.val <> t2.val

关于sql - 如何在 MySQL 中进行连续分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1610599/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com