我有一个表,我想用 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/