首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何避免在连接两个表时出现重复用户名

如何避免在连接两个表时出现重复用户名
EN

Stack Overflow用户
提问于 2019-04-19 20:23:35
回答 2查看 37关注 0票数 0

我有两个与用户信息相关的表:表1(用户)包含诸如id、用户名和电子邮件之类的列。表2(详细信息)包含诸如user_id、degree_name和degree等列。当我连接这两个表时,我得到的结果是:

代码语言:javascript
复制
name         degree_name      degree

john doe      Metric          Science
john doe      Fsc             Engineering  
john doe      Bsc             BSCS
herald        Metric          Science
Matt          Metric          Science

在上面的记录中,“无名氏”重复了3次。什么不应该是预期的结果。我在这里想要的结果是,我知道也可以通过使用find_in_set()来实现:

代码语言:javascript
复制
0: {name: john doe
    details: {0: {degree: "Science",degree_name: "Metric"}
              1: {degree: "Fsc",degree_name: "Engineering  "}
              2: {degree: "Science",degree_name: "BSCS"}}}
1: {name: herald
    details: {0: {degree: "Science",degree_name: "Metric"}}}
2: {name: Matt
    details: {0: {degree: "Science",degree_name: "Metric"}}}

有没有人指导我回答正确的问题?

EN

回答 2

Stack Overflow用户

发布于 2019-04-19 20:34:27

你可以对学位和degree_name使用group_concat。例如::

代码语言:javascript
复制
SELECT name, group_concat(degree), group_concat(degree_name) FROM Table1,Table2 WHERE Table1.id=Table.User_id. GROUP BY Table1.id

它将为您提供一个用户的一行结果。

无名氏|公制,金融服务中心,理科|科学,英语,BCSc。

票数 0
EN

Stack Overflow用户

发布于 2019-04-22 21:12:21

代码语言:javascript
复制
SELECT  u.username, CONCAT('{ "array": [',
               GROUP_CONCAT(CONCAT('{"degree_name": "',
                                   d.degree_name,
                                   '", "degree": "',
                                   d.degree,
                                   '"}'
                            ) separator ','),
               ']}') As details
FROM details d
        INNER JOIN users u
            ON FIND_IN_SET(u.id, d.user_id) > 0
GROUP BY u.id;

此查询将提供预期的答案。只需要一点开销,在获得结果后json解析记录。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55761798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档