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

SQLite中如何将两个表的指定列值按交替方式组合

实现两个表数据的交替排列

要实现你想要的交替组合效果,核心思路是给两个表的每行绑定一个对应的序号,再通过序号+来源表标记来控制最终排序顺序,具体可以这样操作:

步骤说明

  1. 给每行分配对应行号:用ROW_NUMBER()函数,分别给tab.1和tab.2的每行按顺序生成连续行号(因为两个表的数据本身是有序的,直接按col1排序生成行号即可)。
  2. 标记来源表:给每个表的结果加一个标识字段(比如source),用来区分数据来自tab.1还是tab.2,方便后续排序时控制顺序。
  3. 合并后按规则排序:用UNION ALL合并两个表的处理结果,然后先按行号分组,同一行号下优先取tab.1的数据,再取tab.2的数据。

完整SQL代码

SELECT col1
FROM (
    -- 处理tab.1,生成行号和来源标记
    SELECT col1, 
           ROW_NUMBER() OVER (ORDER BY col1) AS rn, 
           1 AS source
    FROM tab.1
    UNION ALL
    -- 处理tab.2,生成对应行号和来源标记
    SELECT col1, 
           ROW_NUMBER() OVER (ORDER BY col1) AS rn, 
           2 AS source
    FROM tab.2
) AS combined_result
-- 先按行号排序,同一行号下优先显示tab.1的数据
ORDER BY rn, source;

效果验证

执行这段SQL后,返回的结果正好是你需要的:1、56、2、66、3、88。

如果后续两个表的行数不一致,多出来的行会按行号顺序排在所有对应行的后面,比如tab.1有4行、tab.2有3行的话,tab.1的第4行数据会排在所有tab.2数据之后。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 16:17:32