如果存在则插入

时间:2017-12-09 20:39:41

标签: mysql tsql

我有两个表:第二个表有外键,它引用第一个表的主键。当我在第二个表中插入数据时,我想首先检查第一个表中是否存在带有iputed键的行。在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 个答案:

答案 0 :(得分:1)

我认为您可以尝试使用以下查询(INSERTSELECTWHERE

INSERT order_products(col1,col2,...,colN)
SELECT @val1,@val2,...,@valN
WHERE EXISTS(SELECT * FROM order WHERE id=@order_id)
  AND EXISTS(SELECT * FROM product WHERE id=@product_id)

在MySQL中我认为它就像跟随

INSERT order_products(col1,col2,...,colN)
SELECT @val1,@val2,...,@valN
FROM DUAL
WHERE EXISTS(SELECT * FROM order WHERE id=@order_id)
  AND EXISTS(SELECT * FROM product WHERE id=@product_id)

或者您可以使用

INSERT order_products(col1,col2,...,colN)
SELECT @val1,@val2,...,@valN
FROM (SELECT * FROM order WHERE id=@order_id) o
CROSS JOIN (SELECT * FROM product WHERE id=@product_id) p

我认为最后一个变体更好。