具有 2 个连接的 MySQL group_concat 返回不需要的结果

发布于 2024-09-30 17:55:15 字数 490 浏览 5 评论 0原文

执行此查询时,我希望得到 2 个手机号码和 1 个类别,但我得到 2 个类别,我做错了什么? 我想这与我加入事物的方式有关?

用户可以有多个imei, categoryjoin 将用户链接到多个类别

SELECT 
    u.*, 
    group_concat(i.mobilenumber) as mobilenumbers,
    group_concat(c.name) as categories 
FROM 
    users AS u 
INNER JOIN 
    categoryjoin AS cj 
ON 
    u.uid = cj.user_id 
INNER JOIN 
    categories AS c 
ON 
    cj.category_id = c.uid 
INNER JOIN 
    imei AS i 
ON
    u.uid = i.user_id
GROUP BY 
    u.uid

非常感谢您的帮助!

When executing this query i expect te get 2 mobilenumbers and 1 category, instead i get 2 categories, what am i doing wrong?
I guess it has to do with the way i am joining things?

User, can have multiple imei's,
categoryjoin links a user to multiple categories

SELECT 
    u.*, 
    group_concat(i.mobilenumber) as mobilenumbers,
    group_concat(c.name) as categories 
FROM 
    users AS u 
INNER JOIN 
    categoryjoin AS cj 
ON 
    u.uid = cj.user_id 
INNER JOIN 
    categories AS c 
ON 
    cj.category_id = c.uid 
INNER JOIN 
    imei AS i 
ON
    u.uid = i.user_id
GROUP BY 
    u.uid

Big pre-thanks you for your help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

歌入人心 2024-10-07 17:55:15

如果用户匹配一个类别,但匹配 imei 中的 2 行,则该类别将在结果集中重复。您可以使用 DISTINCT 删除 group_concat 中的冗余值:

SELECT 
    u.*, 
    group_concat(distinct i.mobilenumber) as mobilenumbers,
    group_concat(distinct c.name) as categories 

If a user matches one category, but matches 2 rows in imei, then the category will be duplicated in the result set. You can get rid of redundant values from group_concat using DISTINCT:

SELECT 
    u.*, 
    group_concat(distinct i.mobilenumber) as mobilenumbers,
    group_concat(distinct c.name) as categories 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文