You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何重复查询表数据,获取I条结果(I可大于表行数N)

实现循环重复查询表数据至指定条数

当然可以实现这个需求,核心思路是生成足够多的重复次数序列,和原表做笛卡尔积后,截取前I条数据即可。下面针对主流数据库给出具体实现:

MySQL(8.0+)

利用递归CTE生成重复次数序列,结合原表做交叉连接后取前I条:

WITH RECURSIVE nums AS (
    SELECT 1 AS n
    UNION ALL
    SELECT n + 1 FROM nums WHERE n < CEIL(5 / (SELECT COUNT(*) FROM T))
)
SELECT t.*
FROM nums
CROSS JOIN T
ORDER BY nums.n, t.id  -- t.id是表T的排序字段,确保重复顺序一致
LIMIT 5;  -- 这里的5替换为你需要的I值

PostgreSQL

使用generate_series快速生成重复序列,语法更简洁:

SELECT t.*
FROM generate_series(1, CEIL(5 / (SELECT COUNT(*) FROM T))::INT) AS s
CROSS JOIN T
ORDER BY s, t.id
LIMIT 5;

SQL Server

同样用递归CTE生成序列,注意加上OPTION (MAXRECURSION 0)避免递归次数限制:

WITH nums AS (
    SELECT 1 AS n
    UNION ALL
    SELECT n + 1 FROM nums WHERE n < CEILING(5.0 / (SELECT COUNT(*) FROM T))
)
SELECT TOP 5 t.*
FROM nums
CROSS JOIN T
ORDER BY nums.n, t.id
OPTION (MAXRECURSION 0);

注意事项

  • 必须指定一个固定的排序字段(比如主键id),否则重复输出的顺序可能不稳定。
  • 如果I小于表T的总行数N,上述代码会自动取前I条,无需额外修改。

内容的提问来源于stack exchange,提问作者Gorz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 04:32:23