2012-02-22 6 views
0

私は正しい構文を得ることができません。私は別のレコードを挿入する前に、値のテーブルをチェックしようとしています。このようなMysqlのIF EXISTを検証に使用するにはどうすればよいですか?

何か:私はちょうど別のテーブルに入力することが許される前...さらに移動するには、特定のレコードが存在を確認する

IF EXISTS (SELECT * FROM rooms WHERE id = 1) 
THEN 
INSERT INTO other_table (room_id) VALUES (1) 
END IF 

、私は実際に確認したいのですがカップルの事は、私はその最初のすべてを学ぶ必要があれば、私は悲しいことするつもりですので、私は、まだアップ取引にないんだけど、またはストアドプロシージャ...

IF EXISTS (SELECT * FROM rooms WHERE id = 1) AND (SELECT * FROM guests WHERE guest_id = 10) 
THEN 
INSERT INTO other_table (room_id,guest_id) VALUES (1,10) 
END IF 

存在します。

答えて

1

あなたはINSERT INTO ... SELECT使用することができます。

INSERT INTO other_table (room_id) 
SELECT 1 FROM rooms WHERE id =1 GROUP BY id 

GROUP BY

はわずか1行を超えないことを確認サブクエリのリターンを作るために、 rooms.idが一意である場合、あなたがそれを必要としない複数のテーブルについては

を。 :

INSERT INTO other_table (room_id,guest_id) 
SELECT 1, 
10 
FROM rooms WHERE id = 1 and exists (SELECT 1 FROM guests WHERE guest_id = 10) LIMIT 1; 
+0

興味深いことに...何も返されなければ、挿入を無視しますか?これは複数の条件でも機能すると思いますか? –

+0

@ aiex07 2つ以上のレコードを比較する必要がある場合、この構文は成功しません。/ –

+0

@Jascha:2つのテーブルの例が追加されました。 – a1ex07

関連する問題