powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / удалить последовательные повторы из SELECT
6 сообщений из 6, страница 1 из 1
удалить последовательные повторы из SELECT
    #39033797
NetyNicka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
Есть условная таблица
-------------------
___table___
-------------------
|id|res|value|
|1|gold|44|
|2|gold|44|
|3|gold|45|
|4|gold|46|
|5|gold|44|
|6|gold|44|
|7|gold|47|

нужно удалить последовательные повторяющиеся значения из value, чтобы стало:
____________
|1/2|gold| 44|
|3|gold| 45|
|4|gold| 46|
|5/6|gold| 44|
|7|gold| 47|

При этом не имеет значения, какой элемент будет удален в повторении первый или второй.
При этом значения могут повторяться на всем интервале выборки.

Я пробовал
Код: sql
1.
SELECT DISTINCT * FROM table GROUP BY value ORDER BY id


но тогда остается лишь одно значение, что неприемлемо.
...
Рейтинг: 0 / 0
удалить последовательные повторы из SELECT
    #39033813
NetyNicka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Удалить нужно не запись из БД, а проигнорировать ее при SELECT запросе.
тестовая бд из вопроса.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE TABLE `table` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `res` varchar(255) DEFAULT NULL,
  `value` int(6) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of table
-- ----------------------------
INSERT INTO `table` VALUES ('1', 'gold', '44');
INSERT INTO `table` VALUES ('2', 'gold', '44');
INSERT INTO `table` VALUES ('3', 'gold', '45');
INSERT INTO `table` VALUES ('4', 'gold', '46');
INSERT INTO `table` VALUES ('5', 'gold', '44');
INSERT INTO `table` VALUES ('6', 'gold', '44');
INSERT INTO `table` VALUES ('7', 'gold', '47');



Очень надеюсь на вашу помощь!
...
Рейтинг: 0 / 0
удалить последовательные повторы из SELECT
    #39033855
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select t1.*
from `table` t1
where not exists ( select 1
                   from `table` t2
                   where t1.id = 1+t2.id 
                   and t1.res = t2.res
                   and t1.value = t2.value
                 );
...
Рейтинг: 0 / 0
удалить последовательные повторы из SELECT
    #39033858
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При этом под
NetyNickaпоследовательные повторяющиеся значения
я разумею "отличающиеся на 1" при сортировке по возрастанию ID.

Если в значениях этого поля имеются "разрывы" - придётся модифицировать запрос.
...
Рейтинг: 0 / 0
удалить последовательные повторы из SELECT
    #39033944
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NetyNicka,
http://sqlfiddle.com/#!9/4b03a/1
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
select
   min(id) id
  ,group_concat(id order by id)ids
  ,res
  ,`value`
from(
  select id,res,`value`
    ,(@n:=@n+1)
    -(@g:=if(@r=res and @v=`value`
         ,@g
         ,least(@r:=res,@v:=`value`,0)
       )+1) 
    as rank
  from `table`,(select @n:=0,@g:=0,@t:=null,@v:=null)v
  order by id -- для правильной нумерации
  )r
group by rank; -- и одновременно сортировка по ID

Но в план выполнения лучше не заглядывать
...
Рейтинг: 0 / 0
удалить последовательные повторы из SELECT
    #39033989
NetyNicka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, Cygapb-007, спасибо за быструю помощь, все работает замечательно.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / удалить последовательные повторы из SELECT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]