如何用单条SQL语句生成LocationID与GroupID全组合的临时表数据
解决方案
用**交叉连接(CROSS JOIN)**就能一次性生成所有Location和Group的组合记录,SQL语句如下:
INSERT INTO @tempEmails (tName, tEmail, tGroup, tLocation) SELECT 'StandardGroup' AS tName, 'Xmail@mail.com' AS tEmail, g.ID AS tGroup, l.ID AS tLocation FROM t_Locations l CROSS JOIN [Group] g;
关键说明
CROSS JOIN会返回两个表的笛卡尔积,自动生成每个LocationID与GroupID的全部组合,刚好满足你要的N个Location×M个Group=N×M条记录的需求。- 由于
Group是SQL保留关键字,所以表名需要用方括号[Group]包裹,避免语法报错。 - 执行这条语句后,
@tempEmails临时表就会包含所有需要的组合数据,方便后续检查或同步到最终表。
内容的提问来源于stack exchange,提问作者Sam Ryan
相关产品推荐
相关产品推荐

