限价抵消或在UPDATE SQL查询OFFSET(LIMIT offset or OFFSET in

2019-06-24 17:38发布

我有一个类似的表:

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

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



Answer 2:

我不知道你是否已经申请ID表或不可用,但可以使用WHERE BETWEEN 88和90号 ,MySQL不支持更新询问偏移,但你可以通过使用之间的命令限制做到这一点



文章来源: LIMIT offset or OFFSET in an UPDATE SQL query