gpt4 book ai didi

mysql - 以多对多关系从 MySQL 高效获取结果

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

我有下表:

1) 问题
问题编号
问题内容

2) 标签
塔吉德
标签内容

3) 标签_问题
标签ID
Question_Id

问题和标签之间存在多对多关系。

手头的问题:

对于多个问题(例如 m),我们必须在单个页面上显示与其关联的标签(例如每个问题的 n 个标签)(类似于堆栈溢出主页上的有趣问题)。

我们想到的解决方案:

1) 对于每个问题,JOIN 所有 3 个表并检索标签,但这将需要 m 个查询,并且每个查询的结果将进一步花费 O(n) 时间。因此总时间:O(m*n)

2) 获取所有必需问题 ID 的结果,然后循环访问结果。

还有其他有效的方法来获取相同的结果吗?

最佳答案

您应该能够通过GROUP_CONCAT获得您需要的东西。 :

SELECT q.*, GROUP_CONCAT(DISTINCT t.content) as all_tags 
FROM tags_question tq LEFT JOIN tags t ON tq.TagId=t.id LEFT JOIN questions q ON tq.Question_Id=q.id
GROUP BY tq.Question_Id

关于mysql - 以多对多关系从 MySQL 高效获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38048406/

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