プロが教える店舗&オフィスのセキュリティ対策術

追加したいカラムが3つあるとしまして、そのうち2つはフォームからの入力値で、残り1つは別テーブルのIDをWHEREで引っ張ってきてINSERTしたい場合、INSERT...VALUES()とINSERT...SELECT構文を組み合わせないとダメかと思うのですが、組み合わせるとうまくいきません。2つの文に分けるしかないのでしょうか?
やりたいことは下の感じのSQLです。が、解釈してくれません。
INSERT INTO room(A, B, C) VALUES (1, 2, SELECT other_table.id FROM other_table WHERE other_table.id = 1");

A 回答 (1件)

おつかいのMySQLのバージョンはサブクエリがつかえますか?


バージョンによって仕様が大幅に異なりますので、そのあたりを
提示した方がよろしいかと。

ちなみに表示のSQL文を見る限り
SELECT other_table.id FROM other_table WHERE other_table.id = 1
としても、idで検索してidを返しているので、1しか返って来ないのでは?
(微妙に文法違反もあるし)

こんな感じで再度テストしてみてください
INSERT INTO `room`(`A`, `B`, `C`)
VALUES ('1', '2', (SELECT `data` FROM `other_table`WHERE `id` = 1));

この回答への補足

ご回答ありがとうございます。
MySQLはバージョン5です。
昔はサブクエリ使えませんでしたね…。

ご提示いただいたSQLでテストしてみましたがやっぱりうまくいきませんでした。PDOのprepare利用してます。

補足日時:2007/06/03 21:53
    • good
    • 0
この回答へのお礼

すいません、うまくいきました。さっきは括弧の数間違えてました。ありがとうございました。
()でSELECTをくくればよかっただけだったんですね…。

お礼日時:2007/06/03 22:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す