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

时间:2012-05-23 22:29:19

标签: mysql sql limit offset

我有一张类似的表:

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

我想将X的前两次替换为X1,然后使用X2替换4次,以便生成的表如下所示:

| 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 ...有没有办法做到这一点?

2 个答案:

答案 0 :(得分:8)

我不知道你是否在表中提供了id,但你可以使用 WHERE id BETWEEN 88和90 ,MySQL在更新查询中不支持Offset,但是你可以通过使用 BETWEEN 命令

来限制

答案 1 :(得分:4)

试试这个:

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