Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.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 CTE-是否可以在数字范围内进行迭代?_Mysql_Sql_Common Table Expression - Fatal编程技术网

MySQL CTE-是否可以在数字范围内进行迭代?

MySQL CTE-是否可以在数字范围内进行迭代?,mysql,sql,common-table-expression,Mysql,Sql,Common Table Expression,我很好奇,是否可以使用CTE进行类似的查询(“id”的值可能不同,不一定是连续的) 输出: +------+----+ | val | id | +------+----+ | 5 | 1 | | 10 | 2 | | 22 | 3 | | 5 | 4 | | 10 | 6 | | 22 | 7 | | 5 | 8 | | 10 | 9 | | 22 | 13 | | 5 | 14 | | 10 | 15 | | 22 |

我很好奇,是否可以使用CTE进行类似的查询(“id”的值可能不同,不一定是连续的)

输出:

+------+----+
| val  | id |
+------+----+
| 5    |  1 |
| 10   |  2 |
| 22   |  3 |
| 5    |  4 |
| 10   |  6 |
| 22   |  7 |
| 5    |  8 |
| 10   |  9 |
| 22   | 13 |
| 5    | 14 |
| 10   | 15 |
| 22   | 16 |
+------+----+
您应该在CTE中指定ORDER BY以获得有意义和可靠的行编号,但您的问题中的查询中没有

row_number() OVER ()
输出:

+------+----+
| val  | id |
+------+----+
| 5    |  1 |
| 10   |  2 |
| 22   |  3 |
| 5    |  4 |
| 10   |  6 |
| 22   |  7 |
| 5    |  8 |
| 10   |  9 |
| 22   | 13 |
| 5    | 14 |
| 10   | 15 |
| 22   | 16 |
+------+----+
您应该在CTE中指定ORDER BY以获得有意义和可靠的行编号,但您的问题中的查询中没有

row_number() OVER ()
这就是魔术-非常感谢


这就是神奇之处-非常感谢

id的值可能会有所不同?请参见什么是
elt
?返回第一个参数后的第N个参数,即N。id的值可能会有所不同?请参见什么是
elt
?返回第一个参数后的第N个参数,该参数为N。在这种情况下,不需要ORDER BY。此查询用于准备数据,以便由其他独立的机器进行进一步处理,例如负载平衡器,其中“val”是机器编号。再次感谢-((row_number()over())-1)%3这节省了我的时间:)在这种情况下不需要订购。此查询用于准备数据,以便由其他独立的机器进行进一步处理,例如负载平衡器,其中“val”是机器编号。再次感谢-((排号()超过())-1)%3这挽救了我的一天:)
row_number() OVER ()