1. ホーム
  2. sql

[解決済み] selectから取得した各行に対してinsertを実行しますか?

2023-06-24 13:39:17

質問

私は複数のテーブルに挿入する必要があるレコードの数を持っています。他のすべての列は定数になります。

以下の貧しい擬似コード - これは私がやりたいことです。

create table #temp_buildings
(
    building_id varchar(20)
)
insert into #temp_buildings (building_id) VALUES ('11070')
insert into #temp_buildings (building_id) VALUES ('11071')
insert into #temp_buildings (building_id) VALUES ('20570')
insert into #temp_buildings (building_id) VALUES ('21570')
insert into #temp_buildings (building_id) VALUES ('22570')

insert into property.portfolio_property_xref
        ( portfolio_id ,
          building_id ,
          created_date ,
          last_modified_date
        )
values
        ( 
            34 ,
            (
                select  building_id
                from    #temp_buildings
            ) ,
            getdate() ,
            null
        )

意図的なものです。 property.portfolio_property_xrefに#temp_buildingsの各レコードを挿入する。

カーソルを使ってこれを行うことができると思いますが、恐ろしく時間がかかると思います。この演習は将来的に繰り返されるため、より高速な方法で取り組みたいのですが、方法がわかりません。何かフィードバックがあれば、ありがたいです。

どのように解決するのですか?

INSERT INTO table1 ( column1 )
SELECT  col1
FROM    table2

のように。

insert into property.portfolio_property_xref
( 
    portfolio_id ,
    building_id ,
    created_date ,
    last_modified_date
)
select
    34,
    building_id,
    getdate(),
    null
from
    #temp_buildings