MySQL запрос, чтобы назначить уникальное случайное число для каждой строки - PullRequest
11 голосов
/ 02 марта 2009

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

Итак, если бы в моей таблице было 999 строк , то числа от 1 до 999 были бы назначены случайным образом и уникально .

Теперь я решил, что мог бы добавить фиктивную TempRandomColumn = Rand (), отсортировать по ней и последовательно добавлять числа с использованием PHP. Но это означает 999 операторов MySQL.

Есть ли способ сделать это с помощью одного оператора MySQL?

Спасибо за любые указатели.

Ответы [ 2 ]

24 голосов
/ 02 марта 2009
SET @r := 0;
UPDATE  items2
SET     author_id = (@r := @r + 1)
ORDER BY
        RAND()
1 голос
/ 02 марта 2009
SET @i=1;
SELECT t.*, @i:=@i+1 as RAND_NUM FROM your_table t ORDER BY RAND();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...