从与其他表有关联的表中删除查询

时间:2019-06-09 10:50:40

标签: mysql sql

我有两个这样的表: tbl1-

ID | post_id | terms_id
------------------------
1     4001      2
2     4001      1
3     4001      3
4     4002      5
5     4002      2

tbl2-

terms_id | taxonomy_id | taxonomy
----------------------------------
1          30             category
2          33             keywords
3          42             location
4          52             category
5          32             category

我想从tbl2中删除两个post_id = 4001和(terms_id ='category')的tbl1。 我不能编写此查询如何设置关系tbl1 terms_id和tbl2 terms_id 和tbl2 terms_id应该是“ category”。 我尝试使用内部联接,但它同时删除了两个表数据,或者显示错误。我只需要从tbl1数据中删除。
这是我的查询:

DELETE FROM tbl1 
INNER JOIN tbl2 ON tbl2.terms_id = tbl1.terms_id 
WHERE tbl2.taxonomy = 'category' AND tbl1.post_id = 4001

1 个答案:

答案 0 :(得分:1)

涉及删除的表在DELETE子句中声明,因此您应该声明突出显示要删除行的表名

仅应根据联接表中的匹配结果从tbl1中删除

DELETE tbl1
FROM tbl1
INNER JOIN tbl2 ON tbl1.post_id  = 4001 
  and tbl1.terms_id  = tbl2.terms_id 
    and  tbl2.taxonomy = 'category'