Добавьте значение в строку в MySQL, если оно больше, чем другое значение - PullRequest
0 голосов
/ 31 октября 2019

У меня есть таблица Users, которая содержит уникальный идентификатор, целое число 'econ' и некоторые другие не относящиеся к делу данные. Я пытаюсь создать оператор SQL для простой реализации азартных игр. У меня есть доступ к идентификатору пользователя, сумме ставки и сумме, которую они потенциально могут выиграть. Мне нужно убедиться, что у пользователя в настоящее время больше денег, чем в общей ставке, и, если это так, ОБНОВИТЬ строку в Users.econ + выигрыши. (Если пользователь проиграл ставку, я просто использую отрицательное число в качестве значения выигрыша). Я могу сделать это с парой отдельных заявлений, но я бы предпочел использовать одно, чтобы мне не приходилось иметь дело с транзакциями.

Модель:

Пользователь: id (varchar), econ (integer), другие

Текущая реализация:

  • SQL: ВЫБРАТЬ econ от пользователей WHERE id = 'xyz'
  • Логика: если(econ> bet) newEcon = econ + winnings, иначе выкидывается ошибка
  • SQL: ОБНОВЛЕНИЕ пользователей SET econ = newEcon WHERE id = 'xyz'

Желаемый результат:

Пример 1:

Модель пользователя: id: 10, econ: 300

Запрос SQL: id: 10, ставка: 200, выигрыш: 300

Результат: Пользователь: id: 10, econ: 600

Пример 2:

Модель пользователя: id: 5, econ: 50

SQL-запрос: id: 5, ставка: 100, выигрыш: 500

Результат: Пользователь: id: 5, econ: 50 (без изменений)

Пример 3:

Модель пользователя: id: 12, econ: 200

Запрос SQL: id: 12, ставка: 100,выигрыши: -100

Результат: Пользователь: id: 12, econ: 100

Ответы [ 2 ]

1 голос
/ 31 октября 2019

Вы должны иметь возможность интегрировать сравнение в ваш запрос UPDATE:

UPDATE users
SET econ = econ + ?
WHERE econ > ? AND id = ?

Здесь я использовал заполнители в предположении, что вы подготовите запрос, чтобы они были для winnings, bet и id

1 голос
/ 31 октября 2019

этот запрос работает:

update accbalance set econ = econ + @winnings where id=@id and econ > @bet ;

В следующий раз, пожалуйста, создайте sqlfiddle, это может помочь.

запрос был проверен в: http://sqlfiddle.com/#!9/960009/1.

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