Sql server SQL从多个表和整数列表中插入

Sql server SQL从多个表和整数列表中插入,sql-server,tsql,azure,azure-sql-database,Sql Server,Tsql,Azure,Azure Sql Database,我需要以下SQL Azure的SQL语句 我有两个数据表: 租户(相关列:Id) 用户(相关栏目:Id) 用户与租户表没有直接链接 我需要为每个用户填写第三个表OptInMail(相关列:TenantId,UserId,OptInType),为每个租户填写optinPeList的每个值的记录 OptInTypeList = 1, 2, 3, 10, 11, 14 有什么建议吗?插入OptInMail(租户ID、用户ID、OptInType) insert into OptInMail (T

我需要以下SQL Azure的SQL语句

我有两个数据表:

  • 租户
    (相关列:Id)
  • 用户
    (相关栏目:Id)
用户与租户表没有直接链接

我需要为每个用户填写第三个表
OptInMail
(相关列:
TenantId
UserId
OptInType
),为每个租户填写
optinPeList
的每个值的记录

OptInTypeList = 1, 2, 3, 10, 11, 14
有什么建议吗?

插入OptInMail(租户ID、用户ID、OptInType)
insert into OptInMail (TenantId, UserId, OptInType) 
    select 
        t.id, u.id, 1 
    from 
        Tenants as t, Users as u;

...<put same statements with values 2,3,10,11 as far as there are not so many to write>...

insert into OptInMail (TenantId, UserId, OptInType) 
    select 
        t.id, u.id, 14 
from 
    Tenants as t , Users as u ;
挑选 t、 身份证,身份证,1 从…起 租户为t,用户为u; ...... 插入OptInMail(租户ID、用户ID、OptInType) 挑选 t、 身份证,身份证,14 从…起 租户为t,用户为u;
插入OptInMail(租户ID、用户ID、OptInType)
挑选
t、 身份证,身份证,1
从…起
租户为t,用户为u;
......
插入OptInMail(租户ID、用户ID、OptInType)
挑选
t、 身份证,身份证,14
从…起
租户为t,用户为u;
试试这个:

 insert into OptInMail (TenantId, UserId, OptInType)
 select distinct t.id, u.id, o.id
 from Tenants t cross join Users u cross join OptInTypeList o
如果列表不是表,请执行以下操作:

 insert into OptInMail (TenantId, UserId, OptInType)
 select distinct t.id, u.id, o.id
 from Tenants t cross join Users u cross join 
 (
 select 1 id union all
 select 2 id  union all
 select 3 id  union all
 select 10 id  union all
 select 11 id  union all
select 14 id 
 ) o
试试这个:

 insert into OptInMail (TenantId, UserId, OptInType)
 select distinct t.id, u.id, o.id
 from Tenants t cross join Users u cross join OptInTypeList o
如果列表不是表,请执行以下操作:

 insert into OptInMail (TenantId, UserId, OptInType)
 select distinct t.id, u.id, o.id
 from Tenants t cross join Users u cross join 
 (
 select 1 id union all
 select 2 id  union all
 select 3 id  union all
 select 10 id  union all
 select 11 id  union all
select 14 id 
 ) o

-在ANSI-92 SQL标准(20多年前)中,旧样式的逗号分隔表列表样式被正确的ANSI
JOIN
语法所取代,其使用不受欢迎,因此不推荐使用。不幸的是,无论您如何编写,交叉连接在性能上都同样糟糕。如果我写一篇文章,我仍然会回到旧的学校方法。。。这通常是演示代码,我还没有将交叉连接推到生产中。我假设这个问题是关于如何填充表一次。我先做了一个快速的解决方案,就这样。我确实同意你们两个。但在现实世界中,有时有一个地方可以找到最快的解决方案,而不是完美的解决方案。-在ANSI-92 SQL标准(20多年前)中,旧样式的逗号分隔表列表样式被正确的ANSI
JOIN
语法所取代,其使用不受欢迎,因此不推荐使用。不幸的是,无论您如何编写,交叉连接在性能上都同样糟糕。如果我写一篇文章,我仍然会回到旧的学校方法。。。这通常是演示代码,我还没有将交叉连接推到生产中。我假设这个问题是关于如何填充表一次。我先做了一个快速的解决方案,就这样。我确实同意你们两个。但在现实世界中,有时有一个地方可以找到最快的解决方案,而不是完美的解决方案。