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

MySQL如何编写SQL为每条原表记录生成带yes/no的两条新记录

MySQL实现单条记录拆分为多条的SQL写法

核心思路

利用交叉连接(笛卡尔积)把原表和包含yes/no两个值的临时集合关联,原表每条记录会自动匹配临时集合的两行,实现拆分效果。

具体SQL实现

适用MySQL 8.0+版本(支持窗口函数)

SELECT 
    -- 生成示例要求的连续新ID,不需要可删除此行
    ROW_NUMBER() OVER (ORDER BY t.id, v.whatever) AS id,
    t.a,
    t.b,
    v.whatever
FROM 你的原表名 t
CROSS JOIN (
    SELECT 'yes' AS whatever
    UNION ALL
    SELECT 'no' AS whatever
) v
ORDER BY id;

适用MySQL 5.x及更低版本(不支持窗口函数)

SELECT 
    -- 生成示例要求的连续新ID,不需要可删除此行
    @row_num := @row_num + 1 AS id,
    t.a,
    t.b,
    v.whatever
FROM 你的原表名 t
CROSS JOIN (
    SELECT 'yes' AS whatever
    UNION ALL
    SELECT 'no' AS whatever
) v
-- 初始化自增变量
CROSS JOIN (SELECT @row_num := 0) AS init
ORDER BY t.id, v.whatever;

说明

  • 把代码里的你的原表名替换为你实际的表名即可
  • 如果不需要输出示例中的连续新ID字段,直接删除对应ID生成的代码行即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:54:05