我的多对多数据库有问题。
我有一个简单的博客系统
帖子 | 类别 | post_has_category
当我使用 join 选择不在类别“3”中的帖子时,它已归档(3 是示例条目)
因为在我的数据库中存储了这样的帖子类别
帖子(id):1
类别(id):3
post_has_category:
post_id 类别_id
1 3
1 4
在我选择类别 3 中的帖子 donn 后,帖子 1 被选中,但我不想要它,因为它属于另一行的类别 3 ..
最佳答案
我们可以使用子查询来识别出现 category_id
为 3 的所有 post_id
。然后,我们可以将原始表左连接到该子查询,并仅保留那些与子查询中任何有问题的表都不匹配的 post_id
。
SELECT p1.*
FROM posts p1
LEFT JOIN
(
SELECT DISTINCT post_id
FROM posts
WHERE category_id = 3
) p2
ON p1.post_id = p2.post_id
WHERE p2.post_id IS NULL
请注意,如果给定的 post_id
只能与给定的 category_id
关联一次,则子查询中的 DISTINCT
应该是不必要的。
关于mysql - 从多对多结果中删除一些数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42294553/