Mysql 限制偏移量或更新SQL查询中的偏移量
我有一张类似的桌子:Mysql 限制偏移量或更新SQL查询中的偏移量,mysql,sql,limit,offset,Mysql,Sql,Limit,Offset,我有一张类似的桌子: | 0 | X | | 1 | X | | 2 | X | | 3 | Y | | 4 | Y | | 5 | X | | 6 | X | | 7 | Y | | 8 | Y | | 9 | X | 我想用X1替换X的前两次出现,然后用X2替换接下来的4次出现,结果表如下所示: | 0 | X1 | | 1 | X1 | | 2 | X2 | | 3 | Y | | 4 | Y | | 5 | X2 | | 6 | X2 | | 7 | Y |
| 0 | X |
| 1 | X |
| 2 | X |
| 3 | Y |
| 4 | Y |
| 5 | X |
| 6 | X |
| 7 | Y |
| 8 | Y |
| 9 | X |
我想用X1替换X的前两次出现,然后用X2替换接下来的4次出现,结果表如下所示:
| 0 | X1 |
| 1 | X1 |
| 2 | X2 |
| 3 | Y |
| 4 | Y |
| 5 | X2 |
| 6 | X2 |
| 7 | Y |
| 8 | Y |
| 9 | X2 |
所讨论的表当然要大得多,因此出现的次数也会更高,因此手动编辑不是解决方案
我想这样做:
| 0 | X1 |
| 1 | X1 |
| 2 | X2 |
| 3 | Y |
| 4 | Y |
| 5 | X2 |
| 6 | X2 |
| 7 | Y |
| 8 | Y |
| 9 | X2 |
更新表集合列='X',其中列='X2'限制90,88
但不幸的是,MySQL似乎不支持更新查询中的偏移量。。。有什么方法可以做到这一点吗?试试这个:
更新表集合列='X1'其中id INSELECT id FROM SELECT id FROM表集合列='X'限制2为u
然后
更新表格集合列='X2',其中id INSELECT id FROM SELECT id FROM表格,其中列='X'限制4为u 我不知道表中是否有可用的id字段,但您可以使用id在88到90之间的WHERE,MySQL在更新查询中不支持偏移量,但是您可以通过限制使用BETWEEN命令来实现这一点这个版本的MariaDB还不支持“LIMIT&IN/ALL/ANY/SOME子查询”,我也遇到了同样的问题,但因为我跳过了第一个外部select语句。两者都在检索id这一事实是解决此限制的一个办法。