gpt4 book ai didi

mysql - 在 MySQL 中一对多分组

转载 作者:可可西里 更新时间:2023-11-01 07:35:48 26 4
gpt4 key购买 nike

我有一个问题。我在 MySQL 中有以下表格:

+---------+    +-----------+   +---------+
| USER | | USER_LANG | | LANG |
| id_user | | id_user | | id_lang |
| name | | id_lang | | name |
| | | years | | |
+---------+ +-----------+ +---------+

我有以下信息:

+--------------------------------+
| ID_USER | ID_LANG | YEARS |
| 1 | 5 | 1 |
| 1 | 6 | 2 |
| 2 | 5 | 9 |
| 2 | 6 | 3 |
| 3 | 5 | 7 |
+--------------------------------+

我需要实现的是将所有说完全相同一组语言的用户归为一组,然后对年份求和。比如我需要得到的是:

+----------------------+
| LANGS | SUM_YEARS |
| 5;6 | 15 |
| 5 | 7 |
+----------------------+

这很奇怪,但我需要这个。我尝试使用 GROUP_CONCAT 但没有成功。

希望他们能帮助我。

提前致谢。

最佳答案

这是一个不寻常的请求,但它应该通过子查询中的 GROUP_CONCAT() 解决:

/* Outer query groups the concatentated langs and sums years */
SELECT
LANGS,
SUM(YEARS) AS TOTAL_YEARS,
/* Edit: bonus list of users speaking the languages */
GROUP_CONCAT(ID_USER) AS USER_GROUP
FROM (
/* Subquery gets group concat of languages & sum per user */
SELECT
ID_USER,
GROUP_CONCAT(ID_LANG) AS LANGS,
SUM(YEARS) AS YEARS
FROM USER_LANG
GROUP BY ID_USER
) USER_SUB
GROUP BY LANGS

关于mysql - 在 MySQL 中一对多分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9330453/

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