我有一个“成员”表,如下所示。在尝试整理邮件列表时,我发现地址很容易。另一方面,名字不是那么多。
| id | firstName | lastName | mbrGrpNum | mbrGrpNumID | dateJoined |
--------------------------------------------------------------------
| 1 | Jane | Whitmore | 100100 | 01 | 2016-01-01 |
| 2 | Bob | Whitmore | 100100 | 02 | 2014-02-01 |
| 3 | Carol | Evans | 100101 | 01 | 2012-02-01 |
| 4 | Bob | Roahns | 100101 | 02 | 2015-09-28 |
| 5 | Corry | Roahns | 100101 | 03 | 2014-09-28 |
我想得到的输出是这样的,基于 mbrGrpNum;
1 Whitmore, Jane (01/16) & Bob (02/14)
2 Evans, Carol (02/12) & Rohns, Bob (09/15) & Corry (09/14)
最多可以有六个具有相同 mbrGrpNum
的人(基本上是一个家庭的成员)都具有不同的 mbrGrpNumID
。
最佳答案
使用 CONCAT
连接一行中的列,使用 GROUP_CONCAT
连接一个组中的所有列。
SELECT GROUP_CONCAT(
CONCAT(lastName, ', ', firstName, ' (',
DATE_FORMAT(dateJoined, '%m/%y'), ')')
SEPARATOR ' & ') AS members
FROM members
GROUP BY mbrGrpNum
要合并具有相同姓氏的成员,您需要使用子查询来查找它们。
SELECT GROUP_CONCAT(CONCAT(lastName, ', ', family_members) SEPARATOR ' & ') AS members
FROM (
SELECT mbrGrpNum, lastName,
GROUP_CONCAT(
CONCAT(firstName, ' (', DATE_FORMAT(dateJoined, '%m/%y'), ')') SEPARATOR ' & ') AS family_members
FROM members
GROUP BY mbrGrpNum, lastName) AS families
GROUP BY mbrGrpNum
关于php - MySQL-PHP 多个成员并将名称加入日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38403828/