2017-12-09 25 views
0

私は2つのテーブルを持っています:2番目のテーブルは、最初のテーブルの主キーを参照する外部キーを持っています。そして、2番目のテーブルにデータを挿入するときに、最初のテーブルにIP化されたキーを持つ行が存在するかどうかをまずチェックしたいと思います。 T-SQLでは、次のようになります。存在する場合は挿入

create procedure insert_order_products 
@ order_id int 
@ product_id int 
AS 
IF EXISTS (SELECT * FROM order where order.id=order_id) 
IF EXISTS (SELECT * FROM product where product.id=product_id) 
INSERT INTO order_products values(some values) 

MySQLでIF EXISTSをチェックする方法は?

答えて

1

私は、私はそれはあなたが使用することができます

INSERT order_products(col1,col2,...,colN) 
SELECT @val1,@val2,...,@valN 
FROM DUAL 
WHERE EXISTS(SELECT * FROM order WHERE [email protected]_id) 
    AND EXISTS(SELECT * FROM product WHERE [email protected]_id) 

かを以下のようになると思いますが、次のクエリ(SELECTWHEREINSERT)のMySQLでは

INSERT order_products(col1,col2,...,colN) 
SELECT @val1,@val2,...,@valN 
WHERE EXISTS(SELECT * FROM order WHERE [email protected]_id) 
    AND EXISTS(SELECT * FROM product WHERE [email protected]_id) 

を使用しようとすることができると思う

INSERT order_products(col1,col2,...,colN) 
SELECT @val1,@val2,...,@valN 
FROM (SELECT * FROM order WHERE [email protected]_id) o 
CROSS JOIN (SELECT * FROM product WHERE [email protected]_id) p 

私は最後の変種が優れていると思います。

関連する問題