みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

SQLでできますか?

SQLでできますか?

INSERT INTO test (A) VALUES (B)というSQLを発行したいのですが、このSQLのVALUESのBにあたる部分を正規表現的に指定して、一度のクエリで以下のような結果を得たいのです。

1.テーブルhogeのpiyoカラムの値の先頭がappleになっている行を探す。
2.(1.)で抽出した行のidの値をBとする。

例えば、以下のようにです。

■皆様が回答してくださるSQL文(1クエリで行いたい)
????????????


■皆様が回答してくださるSQL文と同等の意味を持つSQL群
INSERT INTO test (A) VALUES (100)
INSERT INTO test (A) VALUES (101)
INSERT INTO test (A) VALUES (102)


■テーブルhoge
_____id_____piyo__________created
1. 100 applebanana 2009/01/02
2. 101 apple_12345 2009/01/03
3. 102 appleXXXXXX 2009/01/04
4. 103 bananananan 2009/01/05
5. 104 ringogogogo 2009/01/06


分かりにくい説明ですが、お詳しい方、どうかご回答の程を宜しくお願いいたします。

投稿日時 - 2010-02-17 13:23:59

QNo.5683879

すぐに回答ほしいです

質問者が選んだベストアンサー

INSERT INTO test(A,B,C) SELECT id, "Bvalue", "Cvalue" FROM hoge WHERE piyo LIKE 'apple%'

これでいけると思います。

投稿日時 - 2010-02-17 15:38:54

お礼

ありがとうございました。助かりました。
確かに、よく考えると、条件の対象がidだけなら、その構文が使えますね。気づきませんでした。

投稿日時 - 2010-02-17 15:47:28

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

サブクエリをUNIONにすればどうでしょう。
INSERT INTO test(A) VALUES (
SELECT id FROM hoge WHERE piyo LIKE 'apple%'
UNION SELECT "Bvalue"
UNION SELECT "Cvalue"
)

投稿日時 - 2010-02-17 14:30:47

補足

実例を出させていただきます。どこが間違っているのでしょうか?

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

投稿日時 - 2010-02-17 15:42:53

ANo.1

INSERT INTO test(A) SELECT id FROM hoge WHERE piyo LIKE 'apple%'

どうでしょう?

投稿日時 - 2010-02-17 14:01:14

補足

できました、が、実は

INSERT INTO test(A, B, C) VALUES (SELECT id FROM hoge WHERE piyo LIKE 'apple%', "Bvalue", "Cvalue")

回答をもらえば上記SQLのように出来ると思い込んでいました。
このように、本当は一部の値だけを動的に取得してINSERTしたかったのです。

どうやら考えが甘かったようなのですが、上記のように、BとCの値のみ固定してから行う方法はありますでしょうか?

ご教授願います

投稿日時 - 2010-02-17 14:24:24