Покинул форум
Сообщений всего: 30
Дата рег-ции: Июль 2010
Помог: 0 раз(а)
Существует база MySql в таблице 5 строк поле id заполняется автоматически. При удалении одной из записи и создании новой в поле id остаются дыры (1.2.4.5.6). Если не трудно подскажите пожалуйста может есть sql запрос или что то еще что поможет заново пересчитать назначить поле id (12345)?
Champion
Отправлено: 05 Января, 2011 - 09:02:47
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
зачем ?
vlom
Отправлено: 05 Января, 2011 - 09:05:42
Частый посетитель
Покинул форум
Сообщений всего: 681
Дата рег-ции: Окт. 2010 Откуда: Екатеринбург
Помог: 4 раз(а)
Нет, пока такой функции в mysql не добавлено, да и вряд ли когда появится
Реф
Отправлено: 05 Января, 2011 - 09:10:33
Частый гость
Покинул форум
Сообщений всего: 159
Дата рег-ции: Июль 2010 Откуда: Реутов, Россия
Помог: 0 раз(а)
Подобны манипуляции с id могут в конечном итоге привести к нарушению ссылочной целостности таблиц в БД.
Если уж ОЧЕНЬ надо, то получаем число записей в таблице, потом в цикле (от 1 до полученного числа) меняем все id на нужные.
----- Думать надо головой, а не головкой!
ybiza
Отправлено: 05 Января, 2011 - 09:10:51
Новичок
Покинул форум
Сообщений всего: 30
Дата рег-ции: Июль 2010
Помог: 0 раз(а)
Champion! Мне необходимо выбрать случайные записи генерирую rand () число в заданном диапазоне id и беру из базы нужные записи! а если id не все по порядку то может случиться так что произойдет ошибка! Что делать тогда! (Добавление)
Вопрос тогда такой! Можно ли из Mysql взять строку 3 а не строку с id = 3 и если да то как?
Реф
Отправлено: 05 Января, 2011 - 09:40:50
Частый гость
Покинул форум
Сообщений всего: 159
Дата рег-ции: Июль 2010 Откуда: Реутов, Россия
Помог: 0 раз(а)
ybiza пишет:
Вопрос тогда такой! Можно ли из Mysql взять строку 3 а не строку с id = 3 и если да то как?
Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009
Помог: 16 раз(а)
В вашем случае можно сделать выборку из базы всех id и применить функцию array_random или shuffle + array_shift(array_pop). Но это оправданно только при небольшом количестве записей.
Еще можно использовать ORDER BY RAND(), но это не самое лучшее решение.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.