我有以下选择查询:
SELECT opt.product_option_id
FROM `oc_product_option_value` AS opt_val, `oc_product_option` AS opt
WHERE `opt`.`product_option_id` = `opt_val`.`product_option_id`
AND `opt_val`.`price` = '0.0000'
我认为我可以在delete
查询中使用它:
DELETE oc_product_option, oc_product_option_value FROM oc_product_option
INNER JOIN oc_product_option_value
WHERE `oc_product_option`.`product_option_id` = `oc_product_option_value`.`product_option_id`
AND `oc_product_option_value`.`price` = '0.0000'
但是删除了oc_product_option
中的所有行。那我做错了什么?
答案 0 :(得分:1)
你可以尝试一下吗?
DELETE t1 FROM oc_product_option t1
JOIN oc_product_option_value t2
WHERE `t1`.`product_option_id` = `t2`.`product_option_id`
AND `t2`.`price` = '0.0000'
是否打算删除两个表的行?
答案 1 :(得分:0)
你造成循环依赖,这就是你得到这个结果的原因
Bellow查询应仅删除在oc_product_option中具有id且价格为零的行。 或者你必须使用另一个标准来定义oc_product_option中的id范围来过滤oc_product_option表
DELETE FROM oc_product_option o
WHERE o.product_option_id in (SELECT opt.product_option_id FROM oc_product_option_value
where `oc_product_option_value`.`price` = '0.0000')