0

別のテーブル フィールドからの入力を使用してフィールドに挿入しようとしています。これは多くのデータベース エンジンで完全に実行可能ですが、

次のフィールドがあります。

新しいテーブル スキーマ

  • 名前
  • インダストリー ID(int)
  • ロケーション ID(int)

しかし、実際の記録は次のようになります。

  • xxxx
  • TEXT (varchar)
  • TEXT(Varchar)

しかし、これら 2 つの Industryid と Locationid は、別のテーブル Industries、Locations の ID で取得したいと考えています。

他に2つのテーブルがあります

産業

  • ID
  • 名前

場所

  • ID
  • 名前

私のクエリは、

select'insert into organizations(name,industryid,locationid)
values
('''+
Nameofthecompany+''','+
Isnull(industrytype,'Null')+','+
ISNULL(Location,'Null')+')' 
from Organization`

結果

insert into organizations(name,industryid,locationid) 
values 
('Swamy',Telcom,Chennai)

期待される結果

insert into organizations(name,industryid,locationid)
values
('Swamy',12,150)
4

2 に答える 2

2

現在/実際のレコードがOrganization、クエリに示されている名前のテーブルに既にある場合は、このアプローチを使用して新しいOrganizationsテーブルにデータを入力できます。

INSERT INTO Organizations( name, IndustryId, LocationId )
SELECT o.Nameofthecompany, i.Id, l.Id
FROM Organization AS o
LEFT JOIN Industries AS i ON o.industrytype = i.Name
LEFT JOIN Location AS l ON o.Location = l.Name

これにより、既存の名前が取得され、参照テーブル (IndustriesおよびLocations)に結合さIdれ、対応するテキスト値の値が取得されます。

LEFT JOIN、Organization からすべての名前を返しますが、参照テーブルで一致する Industry と Location を持つ必要はありません。

于 2013-04-10T05:04:27.163 に答える
0

次のようなことができます。

SELECT Col1, Col2
INTO TestTable
FROM OriginalTable
WHERE Conditions

SELECT INTO は、INTO 句で指定されたテーブルが存在しない場合にのみ機能することに注意してください。

または:

INSERT INTO TestTable (Col1, Col2)
SELECT Col1, Col2
FROM OriginalTable
WHERE Conditions
于 2013-04-10T05:04:26.367 に答える