mysql - 在这个例子中如何使用 INNER JOIN
问题描述
我正在学习 mysql joins,我有一个简单的问题:
我有一个数据库和两个blogs
表tags
博客:
MariaDB [cvv]> describe blogs;
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| slug | varchar(255) | YES | | NULL | |
| title | varchar(255) | YES | | NULL | |
| content | text | YES | | NULL | |
| created_at | datetime | YES | | NULL | |
| updated_at | datetime | YES | | NULL | |
| user_id | int(11) | YES | | NULL | |
| is_published | tinyint(1) | YES | | NULL | |
+--------------+--------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)
标签:
MariaDB [cvv]> describe tags;
+---------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(15) | YES | | NULL | |
| blog_id | int(11) | YES | MUL | NULL | |
+---------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
基本上我正在尝试使用以下方法获取博客及其标签:
SELECT blogs.id, blogs.title tags.name as tags FROM blogs INNER JOIN tags ON blogs.id = tags.blog_id
但是这个查询一次不会返回超过 1 个标签。
例如,我创建了一个博客 ID、标题 .. 并在标签中创建了两个标签,它们都有blog_id
1,所以我应该得到博客 ID、标题和两个标签,但我只得到一个。
另外,我在表中使用了引用博客 id 的 tags
约束名称,即:blog_id
blog.id
解决方案
这个查询:
SELECT b.id, b.title, t.name as tags
FROM blogs b INNER JOIN
tags t
ON b.id = t.blog_id ;
应该返回多行,每行一个博客/标签对。
如果您希望博客的所有标签位于同一行,则需要汇总结果:
SELECT b.id, b.title, GROUP_CONCAT(t.name) as tags
FROM blogs b INNER JOIN
tags t
ON b.id = t.blog_id
GROUP BY b.id, b.title;
推荐阅读
- azure - 我可以将应用服务中的默认 Azure 域与 Azure 应用程序网关一起使用吗?
- android - 为 Firebase 身份验证设置依赖项后,Gradle 项目同步失败
- c# - LINQ group by 包含表
- python-2.7 - Asciimatics 和 Python 出现错误 6
- android - 如何使用 Room 从光标中获取数据
- c# - dll 的引用已从 asp.net 核心 web api 项目中删除,这会干扰已发布的项目
- linux - 我的 sed 命令是否适用于从 JSON 响应中解析特定键的值
- docusignapi - DocuSign 锚选项卡不可修改
- python - Django queryset iterator() 没有按预期工作
- amazon-web-services - 亚马逊实例上的磁盘缓存/性能问题