SQL根据现有表格和自定义值插入
问题描述:
我有tableA和tableB。表A具有来自表B的PK的FK。我想在tableA(0.0-1.0)中用tableA中的新PK创建11个新行(它在自动增量上),但是从tableB中选择的FK从每个 FK得到,但是具有它们自己的身份TableA的。 tableA*有55个新行(5x11或x型值)。使得插入的行看起来像SQL根据现有表格和自定义值插入
- tableAPK,tableBFK(TYPE1),订购,0.0
- tableAPK,tableBFK(TYPE1),订购,0.1
tableAPK,tableBFK(TYPE1),订购,0.2 ...
tableAPK,tableBFK(TYPE2),订购,0.0
- tableAPK,tableBFK(TYPE1),订购,0.1 ...
伪
insert into [dbo].[tableA] ([tableBFK], [Order], [value])
values ((select [tableBPK], [Order]
from [dbo].[tableB]
where [name] in('type1',
'type2',
'type3',
'type4',
'type5'
),
0,
0.1,
0.2,
0.3,
0.4,
0.5,
0.6,
0.7,
0.8,
0.9,
1)
基本上,我希望根据一定的条件1)选择tableB的的PK,2)插入与一些其他的表的值成TABLEA沿着PK,3)执行此操作每tableBFK行(5)每个硬编码值(11)并将它们映射在一起。 这甚至可能吗?
答
你可以通过你想要的值,创建一个临时表,并在这样一个CROSS JOIN
它做你的INSERT
:
Declare @Values Table (Value Decimal)
Insert @Values Values (0.0), (0.1), (0.2), (0.3), (0.4), (0.5),
(0.6), (0.7), (0.8), (0.9), (1.0);
Insert TableA
(TableBFK, [Order], Value)
Select B.TableBPK, B.[Order], V.Value
From TableB B
Cross Join @Values V
Where B.Name In ('Type1', 'Type2', 'Type3', 'Type4', 'Type5');
可以跳过声明,只是内联表:'CROSS JOIN( VALUES(0.1),(0.2),(0.3),...)B(Value)' –