Поле id представляет из себя целые числа, от 1 до 100 000. Некоторые значения могут отсутствовать (к примеру: ..., 97, 98, 99, 100, 112, 113, ...).
Необходимо заполнить num случайными целыми числами.
Вариант решения №1:
1. Достать из таблицы все значения;
2. Сделать цикл, в каждом проходе которого делать запрос update table set num=rand(0,999999) where id=$id
Возможно есть более умный способ, чтобы не делать 100 000 запросов на обновление?
mysql> select * from test;;
+----+------+
| id | num |
+----+------+
| 1 | NULL |
| 2 | NULL |
| 3 | NULL |
| 4 | NULL |
| 5 | NULL |
+----+------+
5 rows in set (0.00 sec)
mysql> update test set num = rand(12)*1000000;
Query OK, 5 rows affected (0.00 sec)
Rows matched: 5 Changed: 5 Warnings: 0
mysql> select * from test;
+----+--------+
| id | num |
+----+--------+
| 1 | 157418 |
| 2 | 629671 |
| 3 | 676102 |
| 4 | 491496 |
| 5 | 429176 |
+----+--------+
5 rows in set (0.00 sec)
Комментарии, я думаю, излишни )
Единственное — функции rand() параметром передаётся лишь стартовое значение рандомайзера, а не диапазон случайной величины. И возвращает функция значение от 0 о 1. Поэтому умножением приводите результат к нужному порядку.