MySQL обновление математики - PullRequest
4 голосов
/ 05 декабря 2008

скажем, 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

edit: столбец десятичного типа, я попробовал такое же обновление для столбца int с тем же результатом.

edit: это не работает в коде, поэтому нет шансов, что код вызовет одно и то же обновление дважды

Ответы [ 3 ]

4 голосов
/ 06 декабря 2008
UPDATE products    
SET products_price = (1 + products_price)    
WHERE products_id = 8

работает как надо (удалён псевдоним таблицы 'p')

0 голосов
/ 05 декабря 2008

Ваш SQL выглядит нормально. Является ли столбец «что-то» уникальным? Убедитесь, что вы обновляете только одну запись.

0 голосов
/ 05 декабря 2008

Это определенно должно установить products_price равным 2. Должно быть что-то еще.

Это похоже на Проблема с обновлением поля MySQL с помощью PHP , но там не было хорошего решения, поэтому я оставлю и это открытым.

Вы запускаете его с клиента или через скрипт?

Есть ли у вас открытые транзакции или другие сценарии, обращающиеся к базе данных?

Редактировать: Вы упомянули объединения в своем комментарии - я готов поспорить, что ваше объединение отодвигает один и тот же ряд более одного раза.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...