mysql - 对表的每一行执行更新

标签 mysql sql

我有以下 SQL:

DROP TABLE IF EXISTS scores;

CREATE TABLE scores
  (
     id    INTEGER PRIMARY KEY,
     nom   VARCHAR(10),
     score INTEGER,
     rang  INTEGER
  );

INSERT INTO scores
VALUES      (1,'a',91,11),
            (2,'b',92,12),
            (3,'c',93,13),
            (4,'d',94,14);

UPDATE scores
SET    nom = 'foo',
       score = 1,
       rang = 0
WHERE  id = (SELECT id
             ORDER  BY score DESC
             LIMIT  1);

我只想更新得分最高的行(即 94),但是当我执行请求时,表的每一行都采用这些值( demo )。

+----+-----+-------+------+
| id | nom | score | rang |
+----+-----+-------+------+
|  1 | foo |     1 |    0 |
|  2 | foo |     1 |    0 |
|  3 | foo |     1 |    0 |
|  4 | foo |     1 |    0 |
+----+-----+-------+------+

我不明白为什么?有人可以帮我吗?

最佳答案

您可以在 MySQL 的 update 中使用 order bylimit。所以,我认为你的意思是:

UPDATE scores
    SET nom = 'foo', score = 1, rang = 0
    ORDER BY score DESC
    LIMIT 1;

关于mysql - 对表的每一行执行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39946155/

相关文章:

mysql - 获取在一列中只出现一次的值的数量

mysql - 从具有多个表的架构中查询

php - Mysql php - 网络应用程序规模? (大是什么意思?)

php - MySQL 和 PHP : querying 3 rows at a time

javascript - 如何正确连接表并返回 REST API 对象。 [MYSQL+PHP]

MySQL : isn't in GROUP BY

mysql - 如何在 MYSQL 中运行这个脚本?

php - 如何获取mysql中具有重复值的记录数

java - 在 sql 查询中使用 java.sql.Timestamp 对象

sql - 获取每个subscriber_id 每月的最大(日期)记录。每月不返回重复的 ID