我有两个这样的表:
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

最佳答案

涉及删除的表在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'

关于mysql - 从与其他表有关系的表中删除查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56513954/

10-12 18:39