mysql - 仅当新值最高时才插入

标签 mysql

玩家 1 已完成游戏并获得 10 分。仅当该分数是该用户的最高分时,我们才应保存该分数。我如何在单个查询中完成此任务? 我试过这个:

INSERT INTO highscore("score", "player") values(10, 1)
WHERE (SELECT MAX(score) as hs FROM highscore WHERE player = 1) < 10;

谢谢

最佳答案

丑陋的是mysql不支持用where条件插入值,但是你可以通过这样做来作弊:

INSERT INTO highscore (score, player)
SELECT 10, 1 FROM dual
WHERE (SELECT max(score) FROM highscore WHERE player = 1) < 10

如果分数高于 10,则不会插入任何行,否则将创建包含您需要的值的行。它也比触发器更容易,而且我相信它的成本也更低。

关于mysql - 仅当新值最高时才插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23944534/

相关文章:

sql - 在 MySQL 中使用 NULL

python - django 无法通过套接字连接到本地 MySQL 服务器 '/var/run/mysqld/mysqld.sock

mysql按周分组

mysql - 将根据另一列中的值忽略具有相同 ID 的记录的 SQL 查询

php - 将 php 脚本更改为 PDO 导致 MySQL 更新查询期间出现语法错误

php - mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows 等...期望参数 1 是资源

php - 为什么即使升级服务器后,我的网站仍会时不时地显示错误 502?

php 日期和 mysql 时间戳比较

php - 从数据库填充的下拉列表不使用 PHP 记录选定的选项

mysql - SQL - 左连接到两个表不返回任何内容