Я пытаюсь вставить данные в таблицу в отсортированном порядке для последующего быстрого поиска.Я использую порядковый столбец, чтобы указать порядок данных.Примерно так:
SET @ctr = -1;
insert into search_data (trans_id, ordinal)
select trans_id, @ctr:=@ctr+1
from transactions
order by created;
создано поле даты и времени.
При выполнении выбора без вставки строки возвращаются в правильном порядке, но переменная ctr не увеличивается должным образом.Например:
+---+----------+--------------+---------------------+
| 1 | trans_id | @ctr:=@ctr+1 | created |
+---+----------+--------------+---------------------+
| 1 | 131379 | 232 | 2011-10-17 12:27:09 |
| 1 | 131377 | 231 | 2011-10-17 12:24:30 |
| 1 | 131311 | 230 | 2011-10-16 23:44:12 |
| 1 | 131305 | 229 | 2011-10-16 21:57:35 |
| 1 | 129948 | 46 | 2011-10-10 13:24:58 |
| 1 | 129947 | 45 | 2011-10-10 13:24:58 |
| 1 | 129946 | 44 | 2011-10-10 13:24:58 |
| 1 | 129945 | 43 | 2011-10-10 13:24:58 |
| 1 | 129944 | 42 | 2011-10-10 13:24:58 |
Этот метод работал для меня в MySQL 5.0, 4.x и 3.x.Но это не работает в 5.1.
Кажется, что сортировка выполняется после увеличения переменной, тогда как ранее переменная увеличивалась после сортировки
Есть мысли?