php - mysql根据另一个表中的值删除行

标签 php mysql

我有一个表,我想用 INNER JOIN 删除行,其中 WHERE 子句基于另一个表中的值。表2中的primary_key是表1中的foreign_key

表一

table_1_id  |  customer_id  |  table_2_id
-----------------------------------------
     1      |      5        |       1 
     2      |      5        |       2 
     3      |      5        |       3 

表2

table_2_id   |    value
-----------------------
   1         |      0 
   2         |      0 
   3         |      1 

我想从表 1 中删除表 2 中 value 等于 0 的行。所以在这个例子中,DELETE 语句应该删除表 1 中的前两行,因为我使用 INNER JOIN 连接两个表。

我试过了,但它并不完全符合我的要求。此语句始终删除表 1 中的所有行,而不是仅删除前两行。

DELETE t1
FROM Table1 t1
INNER JOIN Table2 t2 ON (t1.table_2_id = t2.table_2_id) 
WHERE t1.customer_id = '5' 
AND t2.value = '0'

最佳答案

你想的太复杂了。你想从表 1 中删除满足条件的地方:

delete from t1 where customer_id = 5 and t2_id in (select t2_id from t2 where value = 0);

关于php - mysql根据另一个表中的值删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46972541/

相关文章:

PhP, MySql - 优化代码

mysql - SQL 查询未对结果进行分组

c# - 在 LINQ WHERE 子句中有条件地允许 null

PHP 从数据库查询中将键添加到数组

javascript - 在同一页面中两次使用 livesearch 文本框

php - MySQL 显示多行

php - 使用 jQuery 从 PHP 文件返回 JSON 数据

php/mysql 返回空集

php - 显示数据库中 JOIN 子句中的所有记录

java - 尝试从 MySQL 查询解析 JSON 时出现异常