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