我有以下 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 by
和 limit
。所以,我认为你的意思是:
UPDATE scores
SET nom = 'foo', score = 1, rang = 0
ORDER BY score DESC
LIMIT 1;
关于mysql - 对表的每一行执行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39946155/