Я ищу запрос, способный выбирать из одной таблицы таким образом, чтобы последовательные записи, для которых атрибут равен, свертываются вместе. Подобно группе, но вместо того, чтобы группировать каждое происхождение атрибута вместе, я хочу одну группу для каждого последовательного диапазона.Выбор групп последовательных записей с общим атрибутом?
Пример таблицы:
+-----+-----+
|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 |
+-----+-------------------+
Я не могу использовать хранимые процедуры.
У меня есть неопределенное понятие. Мне нужно, по крайней мере, один уровень вложенности для сортировки таблицы (возможно, больше всего) и, вероятно, придется использовать переменные, но не более того. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.
EDIT: Запросы для создания, например:
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');
Я боюсь только одной группы в каждой строке. Пока вы группируете по grp по внешнему запросу, он неизбежно терпит неудачу. – Protected
@ Защищено Да. Было несколько ошибок. вы можете попробовать мой запрос? –
Отлично работает, спасибо! – Protected