Я пытаюсь установить значение переменной в ноль всякий раз, когда идентификатор изменяется в следующем запросе.
Я пытаюсь достичь этого одним запросом без проблем с производительностью.
Потому что в реальном запросе у него более 10000 записей.
Вот что у меня есть,
Пример таблицы:
create table Test(id integer, title varchar(100));
insert into Test(id, title) values(1, "Hello");
insert into Test(id, title) values(1, "Hello");
insert into Test(id, title) values(1, "Hello");
insert into Test(id, title) values(1, "Hello");
insert into Test(id, title) values(2, "Hello");
insert into Test(id, title) values(2, "Hello");
insert into Test(id, title) values(1, "Hello");
Вот мой запрос:
select a0.id,a0.title,@a:=@a+a0.id as val from
(select * from Test order by id) as a0
left join
(select id, @a:=0 from Test group by id) as a1
on
a0.id=a1.id
- Вывод, который я получаю при выполнении вышеуказанного запроса:
+----+-------+-----+
| id | title | val |
+----+-------+-----+
| 1 | Hello | 1 |
| 1 | Hello | 2 |
| 1 | Hello | 3 |
| 1 | Hello | 4 |
| 1 | Hello | 5 |
| 2 | Hello | 7 |
| 2 | Hello | 9 |
+----+-------+-----+
- Чего я пытаюсь достичь:
+----+-------+-----+
| id | title | val |
+----+-------+-----+
| 1 | Hello | 1 |
| 1 | Hello | 2 |
| 1 | Hello | 3 |
| 1 | Hello | 4 |
| 1 | Hello | 5 |
| 2 | Hello | 2 |
| 2 | Hello | 4 |
+----+-------+-----+