To update the "second" row in the table, the row that has the second smallest id value ...
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
EDIT
As a continuation, to clarify the query results above ...
In the case where idit is not unique in the table, the query can potentially update more than one row. The inline view ( s) query retrieves the id value from the "second" row after the rows are ordered by id value. Then all rows with the same id value will be updated.
, 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 |
+-----+-----+