来自GROUP_BY的两个LEFT JOIN的GROUP_CONCAT的奇怪重复行为

来自GROUP_BY的两个LEFT JOIN的GROUP_CONCAT的奇怪重复

是我所有表格的结构和查询(请关注最后一个查询,如下所示)。正如你在小提琴中看到的,这是当前的输出:

+---------+-----------+-------+------------+--------------+

| user_id | user_name | score | reputation | top_two_tags |

+---------+-----------+-------+------------+--------------+

| 1       | Jack      | 0     | 18         | css,mysql    |

| 4       | James     | 1     | 5          | html         |

| 2       | Peter     | 0     | 0          | null         |

| 3       | Ali       | 0     | 0          | null         |

+---------+-----------+-------+------------+--------------+

这是正确的,一切都很好。


现在我还有一个名为“category”的存在。每个帖子只能有一个类别。而且我还希望为每个用户获得前两个类别。而这里是我的新的查询。正如您在结果中看到的,发生了一些重复:


+---------+-----------+-------+------------+--------------+------------------------+

| user_id | user_name | score | reputation | top_two_tags |   top_two_categories   |

+---------+-----------+-------+------------+--------------+------------------------+

| 1       | Jack      | 0     | 18         | css,css      | technology,technology  |

| 4       | James     | 1     | 5          | html         | political              |

| 2       | Peter     | 0     | 0          | null         | null                   |

| 3       | Ali       | 0     | 0          | null         | null                   |

+---------+-----------+-------+------------+--------------+------------------------+

看到?css,css,technology, technology。为什么这些是重复的?我只是增加了一个LEFT JOIN对categories,一模一样tags。但它不能按预期工作,甚至也会对标签产生影响。

有谁知道我怎么能做到这一点?

蝴蝶不菲
浏览 1494回答 2
2回答

慕丝7291255

这里没有一般原则来决定。我说,这是一个权衡,你必须在你的确切情况下(包括重要的是你的期望和优化者)来衡量,就像工程“最好”(一个嵌合体)一样。(不同和累积查询的计划似乎很接近;但数据和统计数据都是玩具。我希望优化器能够实现接近累积或内部连接的子选择查询,因为它们之间有明显的简单转换。我是更加怀疑你的查询中的所有重复,但我想解决连接周围的问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL