8

我有一个类似的表:

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

我想替换前 2 次出现的Xwith X1,然后替换 4 次出现的 with ,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 不支持 Offset 在更新查询中,但是您可以通过限制使用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 回答