MySQL 5.1 Вставка / выбор данных в неправильном порядке - PullRequest
0 голосов
/ 28 марта 2012

Я пытаюсь вставить данные в таблицу в отсортированном порядке для последующего быстрого поиска.Я использую порядковый столбец, чтобы указать порядок данных.Примерно так:

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.

Кажется, что сортировка выполняется после увеличения переменной, тогда как ранее переменная увеличивалась после сортировки

Есть мысли?

Ответы [ 2 ]

2 голосов
/ 28 марта 2012

Попробуйте выполнить подзапрос:

select trans_id, @ctr:=@ctr+1
  from ( select trans_id
           from transactions
           order by created, trans_id ) as t

asdfasdf

1 голос
/ 28 марта 2012

В конце инициализации переменной ctr имеется знак апострофа.Пожалуйста, проверьте, соответствует ли он синтаксису.Я думаю, что компилятор запутался из-за этого знака апострофа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...