如何为MySQL另一张表的每条记录在新表插入两条记录
MySQL 实现单条记录生成两条关联插入的方案
方案一:使用 UNION ALL 合并查询结果
这是适配所有MySQL版本的通用写法:
- 先确保目标表
table2存在(已存在可跳过):
CREATE TABLE IF NOT EXISTS table2 ( table1_id INT, site VARCHAR(50) );
- 执行插入操作,将
table1每条记录分别与facebook、google组合后插入:
INSERT INTO table2 (table1_id, site) SELECT id, 'facebook' FROM table1 UNION ALL SELECT id, 'google' FROM table1;
方案二:使用 CROSS JOIN 关联站点列表(MySQL 8.0+ 推荐)
如果后续需要扩展更多站点,这种方式更灵活,只需修改站点列表即可:
INSERT INTO table2 (table1_id, site) SELECT t1.id, s.site FROM table1 t1 CROSS JOIN ( SELECT 'facebook' AS site UNION ALL SELECT 'google' AS site ) s;
简化版(MySQL 8.0.19+ 支持)
用 VALUES 语法直接定义站点列表,代码更简洁:
INSERT INTO table2 (table1_id, site) SELECT t1.id, s.site FROM table1 t1 CROSS JOIN (VALUES ('facebook'), ('google')) AS s(site);
效果验证
执行后 table2 的数据将与需求示例完全一致:
table1_id, site 1, facebook 1, google 2, facebook 2, google
内容的提问来源于stack exchange,提问作者YoHaRo
相关产品推荐
相关产品推荐

