gpt4 book ai didi

mysql - 如何在此示例中使用 INNER JOIN

转载 作者:行者123 更新时间:2023-12-01 00:35:45 24 4
gpt4 key购买 nike

我正在学习 mysql 连接,我有一个简单的问题:

我有一个数据库和两个表 blogstags

博客:

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、标题和两个标签, 但我只有一个。

此外,我在 tags 表中做了一个引用,其中约束名称 blog_id 引用了博客的 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;

关于mysql - 如何在此示例中使用 INNER JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51033605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com