2

我需要根据 Products 表中每条记录的条件将多行插入表Products中的表ProductImages中插入 3 次 以下是ProductImages tableproduct table

Sno | Productid 
 1  |    ABC
 2  |    XYZ
 3  |    PQR

我希望 ProductImages 表为

Sno | ProductId | ImageId 
 1  |    ABC    | ABC_Small
 2  |    ABC    | ABC_Big
 3  |    ABC    | ABC_Biggest
 4  |    XYZ    | XYZ_Small
 5  |    XYZ    | XYZ_Big
 6  |    XYZ    | XYZ_Biggest

是否可以从与 Productid 关系的父表中获取上述多条记录?请帮我。谢谢

4

2 回答 2

4
declare @Product table(Sno int, Productid char(3))
declare @ProductImages Table(Sno int identity(1,1), ProductId char(3), ImageId varchar(20))

insert @Product
values(1, 'ABC'),(2, 'XYZ'),(3, 'PQR')

insert @ProductImages (ProductId, ImageId)
select p.ProductId,p.ProductId+ '_' +a.plus from @Product p
cross apply 
(values ('Small'), ('Big'), ('Biggest')) a(plus)

select * from @ProductImages

编辑 sql 2000

insert @Product values(1, 'ABC')
insert @Product values(2, 'XYZ')
insert @Product values(3, 'PQR')


insert @ProductImages (ProductId, ImageId)
select p.ProductId,p.ProductId+ '_' +a.plus from @Product p
join 
(select 'Small' plus
union all select 'Big'
union all select 'Biggest') a(plus)
on 1 = 1

结果:

Sno ProductId ImageId
1   ABC       ABC_Small
2   ABC       ABC_Big
3   ABC       ABC_Biggest
4   XYZ       XYZ_Small
5   XYZ       XYZ_Big
6   XYZ       XYZ_Biggest
7   PQR       PQR_Small
8   PQR       PQR_Big
9   PQR       PQR_Biggest
于 2013-06-26T08:28:31.980 回答
3

尝试这个

insert ProductImages (ProductId, ImageId)
select
    p.Productid,
    p.Productid+'_'+size
from Products p
cross join (
    Select size
    From (
       Values 
          ('Small'), 
          ('Big'),
          ('Biggest')
    ) s(size)
) sizes
于 2013-06-26T08:30:56.303 回答