gpt4 book ai didi

mysql - 如何检索带有 1 :N relation 的列表

转载 作者:可可西里 更新时间:2023-11-01 08:37:43 26 4
gpt4 key购买 nike

我有一个“文章”表,还有一个“标签”表。两者之间存在 N:N 关系,因此我也有一个“articles_tags_relations”表。我想检索带有标签的文章列表,但是除了标签名称外,我还需要它的 ID。所以返回的数据应该是这样的(当然不是JSON格式):

[[1,"FirstArticle",{"1":"FirstTag","2":"SecondTag"}],[2,"SecondArticle",{"3":"ThirdTag"}]]

到目前为止,我有类似的东西:

SELECT article.*, GROUP_CONCAT(tag.name SEPARATOR ', ') AS tags FROM articles AS article LEFT JOIN articles_tags_relations AS relation ON article.id = relation.article_id LEFT JOIN tags AS tag ON relation.tag_id = tag.id LIMIT 0,10;

但它只有标签名称而没有 ID。表上会有很多读查询,所以性能很重要。我不确定使用 GROUP_CONCAT 是否可行,我愿意接受任何想法。谢谢!

最佳答案

您是否必须在一个查询中执行此操作?我会执行一个查询来获取文章,然后执行第二个查询来获取这些文章 ID 的标签。我不确定性能如何比较。 (关于第二个查询与左连接的成本,这可能取决于您的网络速度。)

也就是说,尝试在一个 sql 查询中连接多个数据片段感觉就像是违背了关系数据库的精神,并且不太可能像数据库真正擅长的那样执行。

关于mysql - 如何检索带有 1 :N relation 的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6170198/

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