Предположим, у меня есть таблица TABLE:Как я могу выполнить этот основной запрос таблицы в PHP?
NAME ID ...
m -1 ...
f -1 ...
g -1 ...
b -1 ...
z -1 ...
И я хочу, чтобы превратить его в:
NAME ID ...
f 1 ...
g 2 ...
m 3 ...
b -1 ...
z -1 ...
Вы, вероятно, получите идею:
- выбрать первые 3 строки из исходной таблицы (порядок сохранения)
- заказывать выбранные строки по NAME колонка.
- обновляет идентификаторы выбранных строк с их позицией в новой таблице (сохраняя оставшиеся невыбранные строки в их исходных положениях).
Так (m, f, g)
получил сортируется (f, g, m)
и (b, z)
остались (b, z)
.
Вот как я пытаюсь сделать это в PHP:
$count = 0;
$query = "UPDATE TABLE SET ID = $count:= $count + 1 ORDER by NAME DESC LIMIT 3";
mysqli_query($con, $query);
Но я не думаю, что я могу просто идти вперед и увеличивать счетчик и сохранять свое значение, как это. Любой совет?
Вы всегда можете просто использовать запрос выбора для запроса первых трех строк и получить имена только когда идентификатор в настоящее время не имеет значения. Затем просто отсортируйте массив, используя функцию sort(). После этого вызовите метод 'array_values ()', чтобы переустановить ключи массива. Теперь вы можете использовать цикл для структурирования ваших запросов. – kfirba