2009-08-18 17 views
6

サブクエリの結果を定数付きテーブルに挿入する

2つのカラムと両方の外部キーが他のテーブルにあるテーブルがあります。 useridとbuildingidという2つのカラムを呼び出して、joinのようにしてみましょう。

+--------------+ 
| join   | 
|--------------| 
|userid  | 
|buildingid | 
+--------------+ 

基本的には、このテーブルに複数の行を挿入する必要があります。このテーブルに複数のエントリがあることにより、各ユーザーは複数の建物に割り当てられます。したがって、ユーザー13は、私は建物数が一定であるならば、私は「、つまり、クエリでこれを行う方法を把握しようとしている以下の

13 1 
13 2 
13 3 

によって建物1、2、および3に割り当てられることがあります同じ建物に人のグループを割り当てること。基本的に(これは間違っています)私がしたいです

insert into join (userid, buildingid) values ((select userid from users), 1) 

それは意味がありますか?私も使用しようとしました

select 1 

私が実行しているエラーは、複数の結果を返すということです。また、基本的には失敗した静的な選択クエリを使用して結合を作成しようとしました。

どのような考えですか?ほとんど

おかげで、 クリス

答えて

20

!クエリの値に挿入する場合は、values句に挿入しないでください。 insertは、値の引数としてselectを取ることができます!

insert into join (userid, buildingid) 
select userid, 1 from users 

また、より多くの学習の精神で、あなたは次の構文を使用して存在しないテーブルを作成することができます。テーブルが存在しない場合にのみ機能します

select userid, 1 as buildingid 
into join 
from users 

、しかし、それはテーブルのコピーを作成する迅速かつ汚れた方法です!

+0

生地!だから近くに!それだった!明確化のポイントのように、values節を使用するときにできるように、複数のselect文を連鎖して複数の挿入を行うことは可能ですか? –

+1

残念ながら、T-SQLにはありません。 MySQLを使用しているなら、これは 'values'を連鎖させることをサポートします。あなたができることは '' insert into join(userid、buildingid)select * from(select 1、1 union all select 2、1 union all select 3,1 ...) 'です。 – Eric

+0

ああ、とても賢い。あなたの助けをもう一度ありがとう! –

関連する問題