Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: обновить таблицу
 
 автор: realkasper   (15.09.2010 в 13:59)   письмо автору
 
 

Всем привет!
Вот такой вот вопросик к гуру:

есть таблица

id_video, name

id_video - AUTO_INCREMENT, первичный

В таблице 8000 записей и хотелось бы эти записи перемешать в случайном порядке, то есть сменить id_video

Кто нибудь в курсе как такое можно провернуть? спасибо

  Ответить  
 
 автор: psychomc   (15.09.2010 в 14:51)   письмо автору
 
   для: realkasper   (15.09.2010 в 13:59)
 

а надо ли? может лучше выборку из таблицы делать в случайном порядке?

  Ответить  
 
 автор: realkasper   (15.09.2010 в 15:22)   письмо автору
 
   для: psychomc   (15.09.2010 в 14:51)
 

нет, там просто этот id идет в контенте в ссылках и нужно их все изменить

  Ответить  
 
 автор: Лена   (15.09.2010 в 16:12)   письмо автору
 
   для: realkasper   (15.09.2010 в 13:59)
 

Я бы так делала.
Выбрать из таблицы в массив все id_video. Перемешать значения в массиве.
Создать в таблице дополнительное поле.
Загрузить перемешанные значения массива в новое поле(UPDATE table...).
Выбрать MAX(id_video) - где-то его запомнить.
Удалить поле id_video.
Переименовать созданное поле в id_video и сделать его автоинкрементным, установить, что автоинкремент должен считать с максимального значения MAX(id_video) , которое вы запомнили раньше.

  Ответить  
 
 автор: realkasper   (15.09.2010 в 16:15)   письмо автору
 
   для: Лена   (15.09.2010 в 16:12)
 

так то интересная идея, но вот вопрос в том что слишком много значений ~8000 и все может умереть

а как тогда забить новую колноку цифрами в случайном порядке чтобы они не повторялись, не из массива а просто нагенерировать?

  Ответить  
 
 автор: Лена   (15.09.2010 в 16:27)   письмо автору
 
   для: realkasper   (15.09.2010 в 16:15)
 

Если постараться, ничего не умрет :)
если 8000, то разбейте на куски - и каждый кусок обрабатывайте отдельно.
mt_rand() - если в php

  Ответить  
 
 автор: realkasper   (15.09.2010 в 16:38)   письмо автору
 
   для: Лена   (15.09.2010 в 16:27)
 

ну это то понятно, но нет смысла гонять массив когда можно просто нагенерировать цифр, вопрос только в том чтобы они не повторялись :-) в случае с mt_rand не будет ли повторения цифр? прошу прощение за вопрос, просто я не совсем спец

  Ответить  
 
 автор: Лена   (15.09.2010 в 17:06)   письмо автору
 
   для: realkasper   (15.09.2010 в 16:38)
 

Повторы возможны. Самый простой вариант - собрать все сгенерированные значения в массив и применить к нему array_unique() - тогда точно повторов не будет.

PS. Вы же в первом посте писали, что вам нужно на основе имеющихся записей.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования