gpt4 book ai didi

mysql - 组合MySQL表,当其他表没有找到时也显示

转载 作者:行者123 更新时间:2023-11-29 12:06:32 25 4
gpt4 key购买 nike

我想知道纯 mysql 查询是否能够执行以下操作:

这是我的标签表:

+---------+-----+
| post_id | tag |
+---------+-----+
| 3 | lol |
| 3 | fun |
| 3 | hot |
+---------+-----+

这些标签属于这个带有帖子的表格:

+----+---------+---
| id | message | ...
+----+---------+---
| 1 | hello.. | ...
| 3 | nice.. | ...
+----+---------+---

现在我想要的是标签表与帖子表组合,并且每个帖子的标签都位于名为标签的单独列中,其中所有标签位于并用逗号分隔:

+----+---------+--------------+---
| id | message | tags | ...
+----+---------+--------------+---
| 1 | hello.. | | ...
| 3 | nice.. | lol,fun,hot | ...
+----+---------+--------------+---

我现在使用这个查询,它可以部分工作:

SELECT ri_posts.*, GROUP_CONCAT(ri_terms.hashtag SEPARATOR ', ') AS hashtags FROM ri_posts JOIN ri_terms ON ri_terms.parent_id = ri_posts.id

此查询的问题在于,它仅显示标签表中具有与相同父 ID 对应的标签的帖子。 如果帖子没有标签,则不会包含在结果中。

现在的结果是(注意 id 1 的帖子消失了):

+----+---------+--------------+---
| id | message | tags | ...
+----+---------+--------------+---
| 3 | nice.. | lol,fun,hot | ...
+----+---------+--------------+---

如何才能显示没有标签的帖子?

最佳答案

您需要一个GROUP BY来获取多行,并需要一个LEFT JOIN来获取所有帖子,即使是那些没有标签的帖子:

SELECT p.*, GROUP_CONCAT(t.hashtag SEPARATOR ', ') AS hashtags
FROM ri_posts p LEFT JOIN
ri_terms t
ON t.parent_id = p.id
GROUP BY p.id;

关于mysql - 组合MySQL表,当其他表没有找到时也显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31386209/

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