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