2012-05-23 65 views
5

我有一个类似的表偏移或OFFSET:LIMIT在UPDATE SQL查询

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

回答

3

试试这个:

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

7

我不知道你是否有ID表或不提起,但您可以使用WHERE ID BETWEEN 88和90,MySQL不支持更新查询中的偏移量,但是您可以通过限制使用BETWEEN指令