我的多对多数据库存在问题。
我有简单的博客系统
发布| 类别| post_has_category
当我使用join选择帖子时没有在类别“3”中,它已经提交(3是示例条目)
因为在我的数据库商店中这样的帖子类别
柱(ID):1
类别(ID):3
post_has_category:
post_id category_id
1 3
1 4
在我选择猫3中的帖子后,选择了帖子1,但我不想要它,因为它属于另一行中的猫3 ..
答案 0 :(得分:1)
我们可以使用子查询来标识出现post_id
3的所有category_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
请注意,如果给定的DISTINCT
只能与给定的post_id
关联一次,则子查询中的category_id
应该是不必要的。