选择具有公共属性的连续记录组?

受保护的

我正在寻找一个能够从单个表中进行选择的查询,该查询将属性相等的连续记录折叠在一起。与分组方式类似,但我希望将每个连续范围分为一组,而不是将属性的每个出现分组在一起。

表格示例:

+-----+-----+
|order|group|
+-----+-----+
|1    |aaa  |
+-----+-----+
|2    |aaa  |
+-----+-----+
|3    |bbb  |
+-----+-----+
|4    |aaa  |
+-----+-----+
|5    |aaa  |
+-----+-----+
|6    |aaa  |
+-----+-----+
|7    |ccc  |
+-----+-----+
|8    |aaa  |
+-----+-----+

预期结果示例:

+-----+-------------------+
|group|group_concat(order)|
+-----+-------------------+
|aaa  |1,2                |
+-----+-------------------+
|bbb  |3                  |
+-----+-------------------+
|aaa  |4,5,6              |
+-----+-------------------+
|ccc  |7                  |
+-----+-------------------+
|aaa  |8                  |
+-----+-------------------+

我不能使用存储过程。

我有一个模糊的概念,我将需要至少一层嵌套来对表进行排序(总计可能更多),并且可能必须使用变量,但仅此而已。如果您需要更多详细信息,请告诉我。

编辑:创建示例的查询:

create temporary table tab (
    ord int,
    grp varchar(8)
);

insert into tab (ord, grp) values
(1, 'aaa'),
(2, 'aaa'),
(3, 'bbb'),
(4, 'aaa'),
(5, 'aaa'),
(6, 'aaa'),
(7, 'ccc'),
(8, 'aaa');
杰森·赫(Jason Heo)

你可以试试这个吗?您可以在这里http://www.sqlfiddle.com/#!2/57967/12进行测试

Select grp_new, group_concat(ord)
From (
   Select ord, if(grp = @prev, @seq, @seq := @seq + 1) as seq,
    if(grp = @prev, grp, @prev := grp) as grp_new
  From tab, (SELECT @seq := 0, @prev := '') AS init
  Order by ord
) x
Group by grp_new, seq;

关键思想是seq为相同的连续组生成相同的内容,如下所示。

Select
   ord, if(grp = @prev, @seq, @seq := @seq + 1) as seq,
    if(grp = @prev, grp, @prev := grp) as grp_new
From tab, (SELECT @seq := 0, @prev := '') AS init
Order by ord

然后最后分组GROUP BY grp, seq,即使连续的分组相同,也可以区分每个分组grp

编辑:为了获得确切的结果在示例中:

Select grp_new, group_concat(ord order by ord)
From (
  Select ord, if(grp = @prev, @seq, @seq := @seq + 1) as seq,
    if(grp = @prev, grp, @prev := grp) as grp_new
  From tab, (SELECT @seq := 0, @prev := '') AS init
  Order by ord
) x
Group by seq

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

服务类具有无法解决的公共属性

来自分类Dev

从数组中删除具有公共属性的对象

来自分类Dev

服务类具有未解决的公共属性

来自分类Dev

Roslyn的TypeDeclarationSyntax,MethodDeclarationSyntax,FieldDeclarationSyntax具有公共属性,但没有公共基类或接口

来自分类Dev

如何使用LINQ从上下文中获取具有公共属性的对象数

来自分类Dev

具有公共属性但值不同的派生类的正确设计设置

来自分类Dev

在Json中映射具有公共属性和动态名称的数组

来自分类Dev

如何基于仅具有公共属性子集的多个表创建视图?

来自分类Dev

在具有不相交行的公共属性上连接多个表

来自分类Dev

如何选择顶点共享公共属性的边属性?

来自分类Dev

在2个python-lists中查找具有公共属性的对象的有效方法

来自分类Dev

具有三个公共属性的加法 3 个私有双数据成员的计算器

来自分类Dev

遍历模型中的所有公共属性

来自分类Dev

所有节点上的密码索引公共属性

来自分类Dev

将公共属性设置为私有

来自分类Dev

没有名为“文本”的公共属性

来自分类Dev

Javascript从私有函数修改公共属性

来自分类Dev

访问currentTarget的公共属性

来自分类Dev

选择具有某些属性的组中的所有行

来自分类Dev

SQL Select是否将记录与至少一个公共属性值相交?

来自分类Dev

导出类的公共属性 X 具有或正在使用来自外部模块“/rxjs/internal/Observable”的名称“Observable”,但无法命名

来自分类Dev

具有通用属性的CSSRules组选择器

来自分类Dev

.Net Xml序列化器使用私有属性名称而不是公共属性名称

来自分类Dev

使用自动生成的公共属性方法与创建访问私有属性的方法

来自分类Dev

在Raku中混合使用私有属性和公共属性以及访问器

来自分类Dev

基于公共属性合并节点并将所有属性添加到初始节点

来自分类Dev

设置模拟的口才模型公共属性

来自分类Dev

在公共属性上使用GetPropInfo

来自分类Dev

如何汇总公共属性值的结果?

Related 相关文章

  1. 1

    服务类具有无法解决的公共属性

  2. 2

    从数组中删除具有公共属性的对象

  3. 3

    服务类具有未解决的公共属性

  4. 4

    Roslyn的TypeDeclarationSyntax,MethodDeclarationSyntax,FieldDeclarationSyntax具有公共属性,但没有公共基类或接口

  5. 5

    如何使用LINQ从上下文中获取具有公共属性的对象数

  6. 6

    具有公共属性但值不同的派生类的正确设计设置

  7. 7

    在Json中映射具有公共属性和动态名称的数组

  8. 8

    如何基于仅具有公共属性子集的多个表创建视图?

  9. 9

    在具有不相交行的公共属性上连接多个表

  10. 10

    如何选择顶点共享公共属性的边属性?

  11. 11

    在2个python-lists中查找具有公共属性的对象的有效方法

  12. 12

    具有三个公共属性的加法 3 个私有双数据成员的计算器

  13. 13

    遍历模型中的所有公共属性

  14. 14

    所有节点上的密码索引公共属性

  15. 15

    将公共属性设置为私有

  16. 16

    没有名为“文本”的公共属性

  17. 17

    Javascript从私有函数修改公共属性

  18. 18

    访问currentTarget的公共属性

  19. 19

    选择具有某些属性的组中的所有行

  20. 20

    SQL Select是否将记录与至少一个公共属性值相交?

  21. 21

    导出类的公共属性 X 具有或正在使用来自外部模块“/rxjs/internal/Observable”的名称“Observable”,但无法命名

  22. 22

    具有通用属性的CSSRules组选择器

  23. 23

    .Net Xml序列化器使用私有属性名称而不是公共属性名称

  24. 24

    使用自动生成的公共属性方法与创建访问私有属性的方法

  25. 25

    在Raku中混合使用私有属性和公共属性以及访问器

  26. 26

    基于公共属性合并节点并将所有属性添加到初始节点

  27. 27

    设置模拟的口才模型公共属性

  28. 28

    在公共属性上使用GetPropInfo

  29. 29

    如何汇总公共属性值的结果?

热门标签

归档