gpt4 book ai didi

MYSQL,这种请求可以吗?

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

我的人员(表 person)拥有 0 或 N 个角色(表 rolepersonne_role)。我想选择所有的人,以及他们所扮演的角色,以获得这样的结果:

PHIL COLLINS | Drummer | Singer

MIKE RUTHERFORD | Singer

ION ANDERSON | Singer

MIKE JAGGER |

CARLOS SANTANA | Guitarist
......

每行可以有 0 或 N 个角色。

为此,我提出了 2 个请求

  • 第一个获取员工(表)

  • 第二个循环所有检索到的员工并检索他们的每个角色(表roleperson_role)

它可以工作,但是在有很多行的情况下,效率不是很高。

我希望在 1 个请求中得到相同的结果。

这可能吗?我必须使用哪些 mysql 关键字才能做到这一点?

感谢您的反馈。多米尼克

最佳答案

您可以使用 JOINGROUP_CONCAT ,类似:

SELECT person.name, role.roles
FROM person
LEFT JOIN (
SELECT person_id, GROUP_CONCAT(DISTINCT role SEPARATOR ' | ') roles
FROM person_role
GROUP BY person_id
) role ON (person.id = role.person_id)

编辑:字段名称只是一个猜测,因为您没有向我们展示完整的表架构;另外,如果角色实际上位于一个单独的故事中,例如由 role_id 连接,您需要将其添加到子查询中。

关于MYSQL,这种请求可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35479450/

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