如何从无关联的两张表中选取所有ID组合并插入关联表
解决两个无关联表ID全组合插入关联表的问题
嘿,我来帮你搞定这个需求!你要的其实就是生成两个表的笛卡尔积——把Entity表中的每一个ID都和TimeZone表中的每一个ID进行配对,然后插入到你的自建关联表中,用SQL的CROSS JOIN就能轻松实现。
正确的SQL写法
假设你的自建关联表名为Entity_TimeZone(结构包含Entity_ID和Time_Zone_Id两个字段),完整的插入语句如下:
INSERT INTO Entity_TimeZone (Entity_ID, Time_Zone_Id) SELECT e.Entity_ID, t.Time_Zone_Id FROM Entity e CROSS JOIN TimeZone t;
为什么这个写法有效?
CROSS JOIN会返回两个表的所有行组合:Entity表有3行,TimeZone表有2行,最终就会生成3×2=6行结果,完全匹配你给出的期望输出。- 不需要任何关联条件(因为两个表原本无关联),直接通过交叉连接就能得到所有可能的ID配对。
补充说明
你之前尝试的SQL片段失败,大概率是因为没有用对交叉连接的方式,反而用了子查询或者错误的关联逻辑。这个方案直接、高效,适合这种全组合的场景。
内容的提问来源于stack exchange,提问作者John Wick
相关产品推荐
相关产品推荐

