我有一个名为 status_t 的表:
**id** **page** **status** **locked**_by
1 0 2 0
1 1 2 0
1 2 2 0
2 0 0 0
2 1 2 0
2 2 2 0
主键是 (id, page) 。
在上面的示例中,我想更新所有页面状态 = 2 的所有行。
即查询应该将所有 id = 1 的行更新为状态 3。所以表将变为
**id** **page** **status** **locked**_by
1 0 3 1
1 1 3 1
1 2 3 1
2 0 0 0
2 1 2 0
2 2 2 0
我试过了:
SELECT * FROM status_t AS t
WHERE id IN
(SELECT id FROM status WHERE status = 0) LIMIT 10
上面的查询获取要更新的行,但我不能这样做:
UPDATE status_t as S1 WHERE id IN
(SELECT id FROM status_t WHERE status = 2)
SET S1.status = 3, S1.locked_by = 1
编辑:
上表只是一个例子。
我不想更新 WHERE id = 1 。我只想更新行,无论具有相同 ID 的状态 = 2 的 ID。在上面的示例中,如果键为 (2, 2) 的行的状态 = 2,那么它应该被更新。