mysql - 如何在sql中的单个查询中获取具有多个值的名称

标签 mysql sql node.js

我有两个表:Person、PersonType

    Person                         PersonType                          PersonTypeMapping
personId   name                 typeId     typeName                tId   personId   typeId
  101         p1                  1        Student                 123       101       1
  102         p2                  2        Employee                124       102       1
  103         p3                                                   125       102       2
                                                                   126       103       1
                                                                   127       103       2

现在我需要获取人名及其相应的类型名称。

这是我的查询

SELECT Person.personId, Person.name,PersonType.typeName 
from Person 
    INNER JOIN PersonTypeMapping ON PersonTypeMapping.personId = Person.personId 
    INNER JOIN PersonType ON PersonType.typeId = PersonTypeMapping.typeId; 

我的输出:

   personId       name        typeName
   101             p1          Student
   102             p2          Student
   102             p2          Employee
   103             p3          Student
   103             p3          Employee

但我需要这样的输出:

   personId       name        typeName
   101             p1          Student
   102             p2          Student, Employee
   103             p3          Student, Employee

为此可以做什么?

最佳答案

SELECT Person.personId, Person.name, Group_Concat(PersonType.typeName) 
from Person 
    INNER JOIN PersonTypeMapping ON PersonTypeMapping.personId = Person.personId 
    INNER JOIN PersonType ON PersonType.typeId = PersonTypeMapping.typeId
GROUP BY Person.personId, Person.name;

关于mysql - 如何在sql中的单个查询中获取具有多个值的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58589122/

相关文章:

java - 如何更正此示例 JPA Java 应用程序?

mysql - 选择一行匹配条件,如果没有,则选择第一个

mysql - 先显示非空值的结果,然后显示空值的结果

sql - 将模型对象保存到 SQL DB 中

javascript - 找不到模块子进程

javascript - 永远运行 Node.js Angular.js Gulp.js 应用程序

php - 如何根据一些规则进行SQL查询

java - 使用 Jsp 与 Web 应用程序的 Android 应用程序数据库连接

node.js - 没有定义require怎么解决?

c# - 如何调用 Entity Framework 中返回动态列的存储过程?