需求:

  1. People Departments
  2. ------ -----------
  3. pID pName deptID deptName
  4. 1 James 1 Engineering
  5. 2 Mary 2 Research
  6. 3 Paul 3 Marketing
  7. 4 Communications
  8. People_Departments
  9. ------------------
  10. pID deptID
  11. 1 1
  12. 1 2
  13. 2 2
  14. 2 4
  15. 3 1
  16. 3 2
  17. 3 3
  18. 需求 结果
  19. pName deptName
  20. James Engineering, Research
  21. Mary Research, Communication
  22. Paul Engineering, Research, Marketing

解决方式:


  SELECT people.pName,
           GROUP_CONCAT(departments.deptName SEPARATOR ', ') deptName
      FROM people
 LEFT JOIN people_departments 
        ON people.pID = people_departments.pID
 LEFT JOIN departments 
        ON people_departments.deptID = departments.deptID
  GROUP BY people.pID


  +-------+----------------------------------+
| pName | deptName                         |
+-------+----------------------------------+
| James | Engineering, Research            |
| Mary  | Research, Communications         |
| Paul  | Engineering, Research, Marketing |
+-------+----------------------------------+
3 rows in set (0.00 sec)