2011-10-23 14 views
0

私はこの問題を抱えています。すぐに問題はありませんが、可能ならば複数のクエリを使用したくありません。外部キーを使用したMySQL INSERTの構文

別の表のデータを使用して表にデータを挿入したいとします。ここでの例です: iは、TABLE1があります

TABLE1 
id name value max_data diff 

そして、ここだ、私は表2からIDを知っていると私はそれから名前とmax_dataを使用したい挿入しながらtable2の

TABLE2 
id name max_data 
1 nm1 8000 
2 nm2 9000 
3 nm3 9500 
4 nm4 9600 
... 

です。このようなもの:

INSERT INTO table1 (value, diff, name, max_data) VALUES (5.0, -0.3, table2.name table2.max_data) WHERE table2.id = 3 
+0

insert文で 'where ... '句を使用することはできません。 –

+0

これは外部キーとは何の関係もありませんでした。 – GolezTrol

答えて

1

これはどういう意味ですか?

insert into table1 (value, diff, name, max_data) 
select 5.0, -0.3, name, max_data 
from table2 
where id = 3 

SELECT句に任意のリテラルを含めることができます。この手法を使用して、複数の行を一度に挿入することもできます。

+0

それは働くようです。私は今では –

+0

複数の行を試してみましょう..私はwhere句でIDを挿入しない場合は、それは同じ値を挿入し、table2から各行の差分ですか? –

+0

@Ika: 'select ...'が3行を生成した場合、3行(おそらく異なる 'name'と' max_data'値)を挿入します。 'table2.id'が主キーであれば、挿入される行は1つだけです。 –

関連する問題