mySQL 中的联接和多对多关系

Joins and Many to Many Relationship in mySQL

所以我有一个由帖子和类别组成的数据库,使用以下 tables

  1. 帖子(PostID,Post名称,Post类别)
  2. 类别(类别 ID、类别名称)

然后我有另一个 table 可以将两者连接在一起,如下所示

  1. posts_categories (Posts_Category_ID, PostID, CategoryID)

我想知道如何为以下命令创建 SQL 查询:

一个。创建一个 SQL 查询以使用多个类别填充单个 POST b.搜索包含多个类别的所有 POSTS

例如创建 Post 命名为 "Post1",类别为 "Digital"、"Analog"、"Linear" 前湾搜索所有包含类别 "Digital" 和 "Linear"

的 Post

非常感谢您的帮助。

我不知道我是否完全理解你的问题,但下面的查询应该 return 多对多 table 中的那些条目有多个 categoryId 一个帖子编号。让我知道这是否有帮助:

select *
from posts_categories pc
join (
select postId
from posts_categories
group by postId
having count(categoryId) >1
) x on x.postId = pc.postId

此外,对于 postId 和 categoryId 列,您应该对此 table 设置唯一约束,或者将其设为主键。

如果您正在谈论获取数据,那么使用链接 table 在 table 之间进行连接。如下所示

select p.PostName, c.CategoryName
from posts p inner join post_categories pc on p.PostID = pc.PostID
inner join categories c on c.CategoryID = pc.CategoryID
where c.CategoryName in ('Digitl','Linear')