Mysql Изменение максимального значения в столбце

lostandleft

Новичок
Здравствуйте! Гугл не помог, прошу откликнутся тут.
Стоит задача замена максимаьлного значения в столбце таблицы.
Есть таблица `users` в базе данных
--------------
Name | ID
--------------
Masha | 1
Petya | 2
Kolya | 3
--------------
Нужно сделать так, чтобы значение ID Kolya изменилось на 1, значение Masha на 2, а Petya на 3
Для решения задачи делаю запрос:

PHP:
$dbh = mysql_connect($host, $user, $pswd) or die("Не могу соединиться с MySQL.");
mysql_select_db(`database`) or die("Не могу подключиться к базе.");
$query = "UPDATE `users` SET id=id+1";
$res = mysql_query($query);
После операции таблица имеет вид
--------------
Name | ID
--------------
Masha | 2
Petya | 3
Kolya | 4
--------------

Послечего хочу изменить Максимальное значение 4
на 1, и выполнить свою задачу.
Гугл говорит что для определения максимального значения в колонке нужно выполнить запрос:
PHP:
SELECT MAX(id) FROM `users`
Но конструкция типа
PHP:
$query = "UPDATE `users` SET id=REPLACE(id, net,1) WHERE net=(SELECT MAX(id) FROM `users`)";
, не хочет делать то, что мне нужно
также как и этот код:
PHP:
$query = "UPDATE `users` SET id=REPLACE(id,(SELECT MAX(id) FROM `users`),1)";
При этом, если прописать вручную значение 4 наподобии этого:
PHP:
$query = "UPDATE `users` SET id=REPLACE(id, 4,1)
То все работает так, как нужно.

Подскажите пожалуйста как решить затык.
 

lostandleft

Новичок
net-это мое извращение,
вопрос озвучен выше:
Как изменить максимальное значение в столбце
Функция REPLACE для этого дела, в теории вроде бы как, более чем подходит.
Указан пример
PHP:
 $query = "UPDATE `users` SET id=REPLACE(id, 4,1)
4 - максимальное значение в столбце ID и с помощью REPLACE изменяется на 1
Мне нужон чтобы вместо ручного указания 4 - это значение определиолсь автоматически.
Для этих целей и использую
PHP:
SELECT MAX(id) FROM `users`
Которое указывает на максималное значение равное в конкретном примере 4

PS Но ничего не получается, поэтому и прошу помочь
PPS Немного поясню логику:
Решил сделать следующий алгоритм в 2 хода для решения задачи, обоначенной выше:
1 Все значения из столбца ID увеличить на 1цу
2 Максимальное значение из столбца ID сделать равным 1це
 

С.

Продвинутый новичок
Объяснять тут похоже бесполезно, что ты делаешь неправильно, поэтому просто держи тупо ответ:
PHP:
UPDATE `users` SET id=1 WHERE id=(SELECT MAX(id) FROM `users`)
или
PHP:
UPDATE `users` SET id=1 ORDER BY id DESC LIMIT 1
И еще надо заметить, что все твоя архитектура ненадежная и у тебя могут быть с ней проблемы.
 

lostandleft

Новичок
Благодарю за ответ, Не происходит ничего в скрипте, а если делать запрос через PHPmyAdmin
Ошибка по конструкции номер 1
PHP:
 UPDATE `users` SET id=1 WHERE id=(SELECT MAX(id) FROM `users`)
You can't specify target table 'users' for update in FROM clause

Использовал
PHP:
 UPDATE `users` SET id=1 ORDER BY id DESC LIMIT 1
- все сработало так, как нужно.
Спасибо!
PS А в чем отсутсвие стабильности в запросе? Какие проблемы могут быть?
 
Сверху