我有一个表格,想通过INNER JOIN
删除其中基于另一个表中某个值的WHERE
子句的行。表2中的primary_key
是表1中的foreign_key
。
表1
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'