2011-09-27 7 views
16

このようなクエリが可能ですか? MySQLは私にSyntaxエラーを与えます。ネストされた選択した複数の挿入値...複数のネストされたSELECTを持つMySQL INSERT

INSERT INTO pv_indices_fields (index_id, veld_id) 
VALUES 
('1', SELECT id FROM pv_fields WHERE col1='76' AND col2='val1'), 
('1', SELECT id FROM pv_fields WHERE col1='76' AND col2='val2') 

答えて

26

を私は次のことをテストしてみました(これは動作します):

insert into test (id1, id2) values (1, (select max(id) from test2)), (2, (select max(id) from test2));

私は問題の私を想像あなたの選択の周りにこの質問がなくてもうまくいかないのであなたは持っていません。

+0

それは本当に問題でした。どのように簡単にすることができます... – netiul

13

あなたがそのようなサブクエリを持っている場合、それは1つの列のみと1行を返すことがあります。サブクエリが1つの行だけを返す場合は、@ Thor84noが気付いたように、それらのまわりに括弧が必要です。行より

彼らが戻る(または戻れる)場合より、代わりにこの試してみてください。

INSERT INTO pv_indices_fields (index_id, veld_id) 
    SELECT '1', id 
    FROM pv_fields 
    WHERE col1='76' 
    AND col2 IN ('val1', 'val2') 

またはあなたの条件は非常に異なっている場合:

INSERT INTO pv_indices_fields (index_id, veld_id) 
    (SELECT '1', id FROM pv_fields WHERE col1='76' AND col2='val1') 
    UNION ALL 
    (SELECT '1', id FROM pv_fields WHERE col1='76' AND col2='val2') 
+2

ありがとうございます!問題は本当にかっこがありませんでしたが、あなたのコメントは教育的でした! – netiul

関連する問題