mysql - 使用 SELECT 进行 SQL 删除

标签 mysql sql select sql-delete

我有以下选择查询:

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 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 中的所有行。那么我做错了什么?

最佳答案

你能尝试一下吗?

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'

是否要删除两个表的行?

关于mysql - 使用 SELECT 进行 SQL 删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21677439/

相关文章:

php - 关联数组的基本查询

php - 将 Php 编码为 DB

mysql - Laravel 悲观锁定无法阻止多个重复请求中未提交行上的 SELECT

mysql - SQL的游标和循环有什么区别

mysql - 在 Mysql 5.6 中加速具有 100.000.000 行的 innodb 表中查询的最佳方法

mysql - 使用 Oracle 防止重复记录将垂直数据显示为水平数据

mysql - 只删除一条重复记录

sql - 使用 Hibernate 进行不区分大小写的搜索

SQL Server 2008 - 当列为空时设置一个值

java - 如何在 Apache Derby 中选择聚合的学生/类(class)数据?