Последние несколько дней я ломал голову над этим, и я не уверен, что это возможно, но решил спросить здесь.
Возможно ли для одного оператора SQL обновить высокий балл, если ваш балл выше, или вставить его, если ваш первый балл?
В таблице My Score есть столбцы UserID, Level и Score, и мне нравится следовать следующей логике:
- Если ваш новый балл больше, чем ваш последний балл для этого уровня, замените его.
- Если у вас нет очков для этого уровня, то добавьте его.
- Если ваш балл за этот уровень меньше, чем ваш наивысший балл за этот уровень, ничего не делайте.
Возможно ли это в одном операторе SQL, или мне нужно использовать два, один, чтобы узнать, есть ли у вас новый высокий балл, и если да, заменить его? Каждый идентификатор пользователя будет иметь только одну оценку в таблице для каждого уровня.
Я использую MySQL.
UPDATE:
Основываясь на ответе ниже, этот следующий SQL работал:
INSERT INTO Scores SET UserID = 'user', Level = 'level', Score = 'score'
ON DUPLICATE KEY UPDATE Score = IF (Score < 'score', 'score', Score)
Моя таблица определена так, что UserID и Level являются ключами.