- ベストアンサー
SQLでできますか?
- SQLで特定の条件を満たす行を抽出し、その値を指定したクエリに利用する方法について教えてください。
- 例えば、テーブルhogeのpiyoカラムの値がappleで始まる行を探し、そのidの値をBとしたいです。
- どうか助けていただけると幸いです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
INSERT INTO test(A,B,C) SELECT id, "Bvalue", "Cvalue" FROM hoge WHERE piyo LIKE 'apple%' これでいけると思います。
その他の回答 (2)
- nda23
- ベストアンサー率54% (777/1415)
サブクエリをUNIONにすればどうでしょう。 INSERT INTO test(A) VALUES ( SELECT id FROM hoge WHERE piyo LIKE 'apple%' UNION SELECT "Bvalue" UNION SELECT "Cvalue" )
補足
実例を出させていただきます。どこが間違っているのでしょうか? INSERT INTO aros_acos (`aro_id`, `aco_id`, `_create`, `_read`, `_update`, `_delete`) VALUES ( SELECT id FROM acos WHERE alias LIKE 'admin_%' , UNION SELECT 1 , UNION SELECT 1 , UNION SELECT 1 , UNION SELECT 1 , UNION SELECT 1 ) MySQLからのメッセージ: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT id FROM acos WHERE alias LIKE 'admin_%' , UNION SELECT 1 , UNION SELECT' at line 3
- aenvgielle
- ベストアンサー率14% (128/893)
INSERT INTO test(A) SELECT id FROM hoge WHERE piyo LIKE 'apple%' どうでしょう?
補足
できました、が、実は INSERT INTO test(A, B, C) VALUES (SELECT id FROM hoge WHERE piyo LIKE 'apple%', "Bvalue", "Cvalue") 回答をもらえば上記SQLのように出来ると思い込んでいました。 このように、本当は一部の値だけを動的に取得してINSERTしたかったのです。 どうやら考えが甘かったようなのですが、上記のように、BとCの値のみ固定してから行う方法はありますでしょうか? ご教授願います
お礼
ありがとうございました。助かりました。 確かに、よく考えると、条件の対象がidだけなら、その構文が使えますね。気づきませんでした。