我的数据库中有一个表,包含2行,Level和Experience。
CREATE TABLE `player_xp_for_level` (
`Level` TINYINT(3) UNSIGNED NOT NULL,
`Experience` INT(10) UNSIGNED NOT NULL,
PRIMARY KEY (`Level`)
)
COLLATE='utf8_general_ci'
ENGINE=MyISAM
;
高达80级的等级经验已由预定义的索引填充。 但是我希望81级的统计数据基于80级的经验,但只需乘以* 1.0115
基本上我正在寻找一次插入一行的查询。 检查以前的体验,然后修改它并插入它。 工作流::检查上一行,更新值(以前的经验* 1.0115)和插入。
答案 0 :(得分:3)
如果您只想显示更高的分数而不影响数据库中的数据。您可以在CASE
语句中使用SELECT
表达式:
SELECT player, lvl,
CASE
WHEN lvl BETWEEN 80 AND 255 THEN score * 1.0115
ELSE score
END as score
FROM player_xp_for_level
由于您已发布其他信息,我已使用INSERT
声明更新了我的回答。您还可以在以下内容中使用CASE
表达式:
INSERT INTO player_xp_for_level (lvl, score)
VALUES (@lvl, CASE WHEN @lvl BETWEEN 80 AND 255 THEN @score * 1.0115 ELSE @score END);
答案 1 :(得分:0)
假设你的表格的结构,这个问题不清楚,那么这样的话呢?
UPDATE
player_xp_for_level
SET
xp = xp * 1.0115
WHERE
player_level BETWEEN 80 AND 255;
答案 2 :(得分:0)
根据您提供的最低代码,我认为这就是您想要的:
UPDATE player_xp_for_level
SET name_of_value_column = name_of_value_column * 1.0115
WHERE name_of_level_column BETWEEN 80 AND 255;