一尘不染

UPDATE SQL查询中的LIMIT偏移量或OFFSET

mysql

我有一个与此类似的表:

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

我想先更换2次出现的XX1用,然后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 …有什么办法吗?


阅读 1173

收藏
2020-05-17

共1个答案

一尘不染

尝试这个:

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);

2020-05-17