Доброго времени суток. У меня есть база MySQL, использую PhpMyAdmin.
Есть такая структура:
id, name, price
КомандойSELECT * FROM `product` ORDER BY name
Я сортирую всё по алфавиту, а как мне поменять id согласно такой сортировке?
То есть у меня получается в результате запроса:
5, Автомобиль, 1.600.000
8, Квартира, 22.455.000
2, Отель, 1.500.000.000
19, Яхта, 324.666.000
Но мне нужно сделать их ID 1,2,3,4, согласно алфавиту. Подскажите как отсортировать и сразу поменять им ID по порядку ? Спасибо.
Никак, потому что индекс автоинкрементный и его значения изменять нельзя. Нужно добавить ещё одно поле, в котором уже хранить порядковый номер для ваших целей. Или просто подставлять номер индекса элемента в массиве + 1, как предлагает выше FanatPHP.
Нет никаких технических ограничений по изменению id или индекса в Mysql, только философско-идеологические.
Естественно эти ограничения могут появиться, если на этот индекс будут ссылаться другие таблицы. Но и на этот случай есть ON UPDATE CASCADE
Сергей, это чушь собачья, особенно про "свободный id".
не над вестись на троллинг, дядя решил повыпендриваться и показать всем, какой он неортодокасльно мыслящий молодец. а на конкретную проблему ему насрать
уникальный идентификатор может использоваться и вне рамок БД, и это торопливо добавленное ON UPDATE CASCADE превращается в тыкву.