mysql - mysql中如何连接名字

标签 mysql

我有疑问:

SELECT YEAR(t1.changedtime) as year, MONTHNAME(t1.changedtime) as months, t6.pname FROM `working_scene` t1 
LEFT JOIN( SELECT longname, username, user_type, email, uid, staff_id, access, fkdeptid, fkhouseid, fkhouseroleid FROM `users` )t2 ON t2.uid = t1.owner 
LEFT JOIN( SELECT longname as squad_leader, uid FROM `users` )t3 ON t3.uid = t1.fkslid 
LEFT JOIN( SELECT weid, fkwpid FROM `working_episode` )t4 ON t4.weid = t1.fkweid 
LEFT JOIN( SELECT wpid, fkpid, fkrftid FROM `working_project` )t5 ON t5.wpid = t4.fkwpid 
LEFT JOIN( SELECT pid, pname FROM `master_project` )t6 ON t6.pid = t5.fkpid WHERE t2.staff_id = '1000368' GROUP BY t6.pname, months ORDER BY changedtime ASC

这会给我结果:

enter image description here

如何删除月份重复并打印一个月内以逗号分隔的项目名称?

例如:

| year |  months  |  pname   |
+------+----------+----------+
| 2016 | November | Hanazuki |
| 2016 | November | Niko     |

成为:

| year |  months  |     pname      |
+------+----------+----------------+
| 2016 | November | Hanazuki, Niko |

编辑

我尝试了group_concat,但它没有按照我想要的方式工作。这是什么

SELECT YEAR(t1.changedtime) as year, 
       MONTHNAME(t1.changedtime) as months,
       GROUP_CONCAT(t6.pname)
FROM `working_scene` t1 
      LEFT JOIN( SELECT longname, username, user_type, email, uid, staff_id, access, fkdeptid, fkhouseid, fkhouseroleid FROM `users` )t2 ON t2.uid = t1.owner 
      LEFT JOIN( SELECT longname as squad_leader, uid FROM `users` )t3 ON t3.uid = t1.fkslid 
      LEFT JOIN( SELECT weid, fkwpid FROM `working_episode` )t4 ON t4.weid = t1.fkweid 
      LEFT JOIN( SELECT wpid, fkpid, fkrftid FROM `working_project` )t5 ON t5.wpid = t4.fkwpid 
      LEFT JOIN( SELECT pid, pname FROM `master_project` )t6 ON t6.pid = t5.fkpid 
WHERE t2.staff_id = '1000368' 
GROUP BY YEAR(t1.changedtime), MONTHNAME(t1.changedtime)
ORDER BY changedtime ASC

enter image description here

最佳答案

MySQL 有内置的聚合函数 GROUP_CONCAT .

SELECT YEAR(t1.changedtime) as year, 
       MONTHNAME(t1.changedtime) as months,
       GROUP_CONCAT(t6.pname)
FROM `working_scene` t1 
      LEFT JOIN( SELECT longname, username, user_type, email, uid, staff_id, access, fkdeptid, fkhouseid, fkhouseroleid FROM `users` )t2 ON t2.uid = t1.owner 
      LEFT JOIN( SELECT longname as squad_leader, uid FROM `users` )t3 ON t3.uid = t1.fkslid 
      LEFT JOIN( SELECT weid, fkwpid FROM `working_episode` )t4 ON t4.weid = t1.fkweid 
      LEFT JOIN( SELECT wpid, fkpid, fkrftid FROM `working_project` )t5 ON t5.wpid = t4.fkwpid 
      LEFT JOIN( SELECT pid, pname FROM `master_project` )t6 ON t6.pid = t5.fkpid 
WHERE t2.staff_id = '1000368' 
GROUP BY YEAR(t1.changedtime), MONTHNAME(t1.changedtime)
ORDER BY changedtime ASC

关于mysql - mysql中如何连接名字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48557989/

相关文章:

mysql - 组合键作为外键(sql)

mysql - 在 MySQL 中插入十六进制值

php - MySQL Where 子句值 0 和 1 无法正常工作

mysql - 有没有办法在 MySQL 中合并 bool 值字段?

基于其他行的MySQL子查询

mysql - 获得具有流派和类型转换的电影输出

c# - 嵌入式 Mysql (libmysql.dll) 和 C# & Asp.Net

php - MySQL:选择 2 个最早记录的时间(AM)

php - Laravel 数据库外键约束不起作用

mysql - 将多个 WHERE .. AND 语句添加到同一个 SQL 查询