Как отсортировать по алфавиту и сохранить по ID?

Доброго времени суток. У меня есть база 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 по порядку ? Спасибо.
  • Вопрос задан
  • 158 просмотров
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
$sql = "SELECT * FROM `product` ORDER BY name";
$data = $mysqli->query($sql)->fetch_all(MYSQLI_ASSOC);
foreach ($data as $i => $row) {
    echo ($i+1), $row['name'], $row['price'];
}

можешь не благодарить
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@galaxy
ID менять, действительно, нафиг не нужно. Вам, по сути, в запросе порядковый номер строки нужно вывести, если я правильно понял. Это несложно:
SELECT row_number() over (), product.* FROM product ORDER BY name

(подправил запрос, спасибо Akina)
Ответ написан
@werwolflg
Никак, потому что индекс автоинкрементный и его значения изменять нельзя. Нужно добавить ещё одно поле, в котором уже хранить порядковый номер для ваших целей. Или просто подставлять номер индекса элемента в массиве + 1, как предлагает выше FanatPHP.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы