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'); 
+0

可以跳过声明,只是内联表:'CROSS JOIN( VALUES(0.1),(0.2),(0.3),...)B(Value)' –