例如,我有一个带有标签的简单博客。我有一个 Blog 表、一个 Tag 表和一个 TagRelation 表。我想运行一个查询并在其自己的单行中获取每个博客文章的所有相关数据,包括标签。
SELECT Tag.id AS 'Tag.id', Tag.name AS 'Tag.name', Blog.id AS 'Blog.id', Blog.author AS 'Blog.author', Blog.title AS 'Blog.title', Blog.content AS 'Blog.content'
FROM Blog
INNER JOIN TagRelation ON TagRelation.target = Blog.id
INNER JOIN Tag ON Tag.id = TagRelation.Tag
WHERE Blog.id = '101'
这个查询将为每个标签提供一行,每个标签都有相同的博客帖子数据,帖子 ID 为 101,添加 aGROUP BY Blog.id
只会给我一行,但任意第一个标签结果是什么。
我想要的是这样的:
Blog.id | Blog.author | Blog.title | Blog.content | Tag.id | Tag.name | Tag.id | Tag.name
-----------------------------------------------------------------------------------------
101 | someone | something | lolstuff | 1 | tag1 | 2 | tag2
这样我的客户端代码就可以轻松地将其解析为对象。这在 MySQL 中是否可行,无需为同一个博客 ID 处理多个匹配行,或者只为获取每个帖子的标签而进行子查询?(实际的数据库当然比这更大更复杂,我想在连接中做尽可能多的事情。)