我有一张类似的表:
| 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 ...有没有办法做到这一点?
答案 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);