скажем, p.products_price равно 1
Почему:
UPDATE products p SET p.products_price = (1 + p.products_price) WHERE p.products_id = 8
сделать p.products_price равным 3?
Он прибавляет 1 к цене, а затем повторяет все заново? Я пытаюсь сделать что-то более сложное, но когда это не сработало, я разбил его на самую простую вещь. Могу ли я сделать здесь какое-то временное значение и рассчитать новую цену, а затем установить ее на это значение?
Пожалуйста, помогите, я в ярости, Спасибо.
Версия клиента MySQL: 4.1.22
изменить: столбец имеет десятичный тип, я попробовал такое же обновление в столбце int с тем же результатом.
edit: это не работает в коде, поэтому нет шансов, что код вызовет одно и то же обновление дважды






Это определенно должно установить для products_price значение 2. Должно быть что-то еще.
Это похоже на Проблема с обновлением поля MySQL с помощью PHP, но там не было хорошего решения, поэтому я тоже оставлю это открытым.
Вы запускаете его из клиента или через скрипт?
Есть ли у вас открытые транзакции или другие скрипты для доступа к базе данных?
Обновлено: вы упомянули объединения в своем комментарии - я готов поспорить, что ваше соединение откатывает одну и ту же строку более одного раза.
больше ничего не происходит, я сначала делал это через скрипт php, но теперь я запускаю его в phpmyadmin. у настоящего обновления есть пара присоединений, и кое-где тоже может быть.
Бьюсь об заклад, это объединения - вы должны выбирать одну и ту же строку более одного раза
нет, я буквально запускаю sql выше, и он все еще делает это, даже если я говорю 'where product_id = 200' :(
Ой .. хромой ... можешь наклеить дамп структуры таблицы + данные (или хотя бы часть данных) и я попробую
Ваш SQL выглядит нормально. Является ли столбец «что-то» уникальным? Убедитесь, что вы обновляете только одну запись.
что-то сейчас является идентификатором пользователя. есть только одна строка, которой соответствует это обновление. он говорит только об одной строке. возможно ли, чтобы одна и та же строка была обновлена дважды?
UPDATE products
SET products_price = (1 + products_price)
WHERE products_id = 8
работает как надо (удален псевдоним таблицы 'p')
Неправильный синтаксис ... Отсутствует 'AS': UPDATE products AS p SET p.products_price = (1 + p.products_price) WHERE p.products_id = 8
У меня возникла такая же проблема, хотя кажется, что при обновлении рассматриваемой веб-страницы добавляется 2, но при начальной загрузке / запуске скрипта он добавляет 1 правильно. Это кому-нибудь подсказывает?