Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: MySql сброс поля!
Форумы портала PHP.SU » PHP » Программирование на PHP » MySql сброс поля!

Страниц (1): [1]
 

1. ybiza - 05 Января, 2011 - 08:26:39 - перейти к сообщению
Существует база MySql в таблице 5 строк поле id заполняется автоматически. При удалении одной из записи и создании новой в поле id остаются дыры (1.2.4.5.6). Если не трудно подскажите пожалуйста может есть sql запрос или что то еще что поможет заново пересчитать назначить поле id (12345)?
2. Champion - 05 Января, 2011 - 09:02:47 - перейти к сообщению
зачем ?
3. vlom - 05 Января, 2011 - 09:05:42 - перейти к сообщению
Нет, пока такой функции в mysql не добавлено, да и вряд ли когда появится
4. Реф - 05 Января, 2011 - 09:10:33 - перейти к сообщению
Подобны манипуляции с id могут в конечном итоге привести к нарушению ссылочной целостности таблиц в БД.

Если уж ОЧЕНЬ надо, то получаем число записей в таблице, потом в цикле (от 1 до полученного числа) меняем все id на нужные.
5. ybiza - 05 Января, 2011 - 09:10:51 - перейти к сообщению
Champion! Мне необходимо выбрать случайные записи генерирую rand () число в заданном диапазоне id и беру из базы нужные записи! а если id не все по порядку то может случиться так что произойдет ошибка! Что делать тогда!
(Добавление)
Вопрос тогда такой! Можно ли из Mysql взять строку 3 а не строку с id = 3 и если да то как?
6. Реф - 05 Января, 2011 - 09:40:50 - перейти к сообщению
ybiza пишет:
Вопрос тогда такой! Можно ли из Mysql взять строку 3 а не строку с id = 3 и если да то как?


CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM таблица ORDER BY id LIMIT 2,1
7. movEAX - 05 Января, 2011 - 09:46:20 - перейти к сообщению
В вашем случае можно сделать выборку из базы всех id и применить функцию array_random или shuffle + array_shift(array_pop). Но это оправданно только при небольшом количестве записей.

Еще можно использовать ORDER BY RAND(), но это не самое лучшее решение.
8. ybiza - 05 Января, 2011 - 09:58:46 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2.       SELECT * FROM таблица ORDER BY id LIMIT 2,1
  3.  

Получается чтобы выбрать строку можно только балансом LIMIT, а если записей 10000 а надо выбрать 515 то надо устанавливать
PHP:
скопировать код в буфер обмена
  1.  
  2.       SELECT * FROM таблица ORDER BY id LIMIT 514,1
  3.  

Я правильно понимаю!
movEAX! нет такой вариант слишком медленный будет, спасибо!

 

Powered by ExBB FM 1.0 RC1