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

无需函数/存储过程,用循环遍历不同ID执行SQL查询并合并结果

无需循环/存储过程的批量查询解决方案

你要的逐个ID查询并追加结果的需求,完全不需要用循环——关系型数据库天生擅长集合操作,直接用下面的方法就能实现相同效果,而且效率比循环高得多:

方法一:IN子句直接匹配

直接把所有唯一ID作为过滤条件,一次性获取所有匹配的结果,相当于自动合并了每个ID的查询结果:

SELECT xyz...  -- 替换成你实际要查询的字段
FROM 你的目标表  -- 替换成执行查询的表名
WHERE num IN (SELECT DISTINCT id FROM table1)

方法二:JOIN关联查询

通过表关联的方式,直接匹配所有符合条件的记录,结果同样是合并后的全集:

SELECT t.xyz...  -- 替换成你实际要查询的字段
FROM 你的目标表 t  -- 替换成执行查询的表名,别名t
JOIN (SELECT DISTINCT id FROM table1) t1 
  ON t.num = t1.id

(可选)模拟循环逻辑(不推荐)

如果非要模拟“逐个循环执行”的逻辑,且不能用存储过程,可以用递归CTE实现,但这种方法效率远低于上面的集合操作,仅作演示:

-- MySQL/SQL Server等支持递归CTE的数据库可用
WITH RECURSIVE id_list AS (
    SELECT DISTINCT id, ROW_NUMBER() OVER () AS rn
    FROM table1
),
loop_query AS (
    -- 初始查询:第一个ID
    SELECT rn, (SELECT xyz... FROM 你的目标表 WHERE num = id_list.id) AS result_col
    FROM id_list
    WHERE rn = 1
    UNION ALL
    -- 递归迭代:逐个处理下一个ID
    SELECT il.rn, (SELECT xyz... FROM 你的目标表 WHERE num = il.id) AS result_col
    FROM id_list il
    JOIN loop_query lq ON il.rn = lq.rn + 1
)
-- 提取所有循环结果
SELECT result_col FROM loop_query;

实际业务里优先用前两种方法,递归CTE只是为了满足“模拟循环”的形式需求,没有性能优势。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 20:50:31