要更新表格中的“第二”行,该行具有第二个最小的id值…
UPDATE test t
JOIN ( SELECT r.id
FROM test r
ORDER BY r.id
LIMIT 1,1
) s
ON s.id = t.id
SET t.no = 2
作为澄清上述查询结果的后续措施…
在id
表中不唯一的情况下,查询可能会更新 多个 行。s
在按ID值对行进行排序之后,内联视图查询()从“第二”行获取ID值。然后将更新具有相同id值的 所有 行。
这是一个问题,只有id
是 不是 唯一的; 如果id
是唯一的,则该语句将(最多)更新一行。
例如,如果表的内容是:
+-----+-----+
| id | no |
+-----+-----+
| 1 | 1 |
| 11 | 3 | <-- "second" row, ordered by id ascending
| 11 | 4 | <-- id from third row matches id from second row
| 21 | 1 |
+-----+-----+
上面查询的结果将是更新值为的 两 行。id``11
+-----+-----+
| id | no |
+-----+-----+
| 1 | 1 |
| 11 | 2 | <-- updated
| 11 | 2 | <-- updated
| 21 | 1 |
+-----+-----+