我想使用MySQL CTE生成随机行的n
计数。到目前为止,我有:
WITH RECURSIVE cte AS
(
SELECT LEFT(MD5(RAND()),8) AS `three`
UNION ALL
SELECT LEFT(MD5(RAND()),8) AS `three`
WHERE `rn` < 10
)
SELECT * FROM cte
;
如何使条件
WHERE `rn` < 10
工作,假设rn
是递归查询返回的行号?
我知道你可以使用:
SELECT ROW_NUMBER() OVER () AS `rn`
获取行号,但如何使用它?有其他解决方案吗?
我使用的是MySQL 8。
您可以在CTE中添加一个从一开始计数的"control"列。然后,您可以将递归步骤限制为在该列中的值超过10时结束(或者n是什么(。在外部SELECT
中,只选择具有随机值的列,而不选择"控制"列。
WITH RECURSIVE cte
AS
(
SELECT left(md5(rand()), 8) three,
1 i
UNION ALL
SELECT left(md5(rand()), 8) three,
i + 1 i
FROM cte
WHERE i + 1 <= 10
)
SELECT three
FROM cte;
数据库<>小提琴