mysql - 从多对多结果中删除一些数据

标签 mysql many-to-many

我的多对多数据库有问题。

我有一个简单的博客系统

帖子 | 类别 | 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/

相关文章:

mysql - 通过 rand() 优化 mysql 顺序

php - 如何从2个表中获取结果并且不显示重复项

mysql - WordPress 在其 MySQL 数据库中对其内容编码做了什么?

mysql - 警告 : mysql_query() expects parameter 2 to be resource, bool 值在 C :\wamp\www\pyrll\emlhome. php 第 15 行给出

asp.net-core - 如何在 EF Core 上创建自定义导航属性

MySQL "many to many"关系错误

javascript - 非 UTC 服务器上所有带有时间戳的 mysql 导出文件是否存在错误?

java - JPA:哪一方应该是 m:n 关系中的拥有方?

python - 通用多对多关系

core-data - 多对多结构中的删除