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 の場合、それを更新する必要があります。