8

次のようなテーブルがあります。

| 0 | X  |
| 1 | X  |
| 2 | X  |
| 3 | Y  |
| 4 | Y  |
| 5 | X  |
| 6 | X  |
| 7 | Y  |
| 8 | Y  |
| 9 | X  |

X結果のテーブルが次のようになるように、最初の 2 回の出現をに置き換えX1、次の 4回の出現を に置き換えたいと思いX2ます。

| 0 | X1 |
| 1 | X1 |
| 2 | X2 |
| 3 | Y  |
| 4 | Y  |
| 5 | X2 |
| 6 | X2 |
| 7 | Y  |
| 8 | Y  |
| 9 | X2 |

もちろん、問題のテーブルははるかに大きく、出現回数も多くなるため、手動で編集することは解決策ではありません。

私はこのようなことをしたいと思います:

UPDATE table SET column = 'X' WHERE column = 'X2' LIMIT 90, 88

残念ながら、MySQL は UPDATE クエリで OFFSET をサポートしていないようです...これを行う方法はありますか?

4

2 に答える 2

12

テーブルで使用可能な id ファイルがあるかどうかはわかりませんが、WHERE id BETWEEN 88 AND 90を使用できます。MySQL は更新クエリでオフセットをサポートしていませんが、BETWEENコマンドを使用して制限することでこれを行うことができます

于 2015-07-03T08:38:39.180 に答える
9

これを試して:

UPDATE table SET column = 'X1' WHERE id IN(SELECT id FROM (SELECT id FROM table WHERE column = 'X' LIMIT 2) as u);

その後

UPDATE table SET column = 'X2' WHERE id IN(SELECT id FROM (SELECT id FROM table WHERE column = 'X' LIMIT 4) as u);

于 2012-05-23T22:33:20.033 に答える