如何在插入之前检查mysql中的值

如何在插入之前检查mysql中的值,mysql,Mysql,大家好,我有以下SQL查询 INSERT INTO ps_ext_mod (id_order,product_reference,id_customer,email) SELECT d.id_order, d.product_reference, o.id_customer, c.email FROM ps_orders o INNER JOIN ps_order_detail d ON d.id_order = o.id_order INNER JOIN ps_customer c ON c.

大家好,我有以下SQL查询

INSERT INTO ps_ext_mod (id_order,product_reference,id_customer,email)
SELECT d.id_order, d.product_reference, o.id_customer, c.email
FROM ps_orders o
INNER JOIN ps_order_detail d ON d.id_order = o.id_order
INNER JOIN ps_customer c ON c.id_customer = o.id_customer

我需要做的是检查表ps_ext_mod,如果id_order已经存在,并且要插入值。如果是,则不要插入它。

您可以直接连接回表,并查找连接失败的地方,即:

INSERT INTO ps_ext_mod (id_order,product_reference,id_customer,email)
SELECT d.id_order, d.product_reference, o.id_customer, c.email
FROM ps_orders o
INNER JOIN ps_order_detail d ON d.id_order = o.id_order
INNER JOIN ps_customer c ON c.id_customer = o.id_customer
LEFT JOIN ps_ext_mod em ON em.id_order = d.id_order
WHERE em.id_order IS NULL

您可以直接连接回表并查找连接失败的位置,即:

INSERT INTO ps_ext_mod (id_order,product_reference,id_customer,email)
SELECT d.id_order, d.product_reference, o.id_customer, c.email
FROM ps_orders o
INNER JOIN ps_order_detail d ON d.id_order = o.id_order
INNER JOIN ps_customer c ON c.id_customer = o.id_customer
LEFT JOIN ps_ext_mod em ON em.id_order = d.id_order
WHERE em.id_order IS NULL

如果要在纯SQL中执行此操作,则有:

If (SELECT count(*) FROM ps_ext_mod WHERE id_order = ?) == 0) THEN (Other SQL)

如果要在纯SQL中执行此操作,则有:

If (SELECT count(*) FROM ps_ext_mod WHERE id_order = ?) == 0) THEN (Other SQL)