Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 限制偏移量或更新SQL查询中的偏移量_Mysql_Sql_Limit_Offset - Fatal编程技术网

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这一事实是解决此限制的一个办法。