将来自其他表的多行合并为mysql中的1列

时间:2018-08-05 05:04:55

标签: mysql

我有两个桌子

table1

|---------------------|------------------|------------------|
|      student_id     |   studentname    |     parentid     |
|---------------------|------------------|------------------|
|          1          |       Kobe       |        1         |
|---------------------|------------------|------------------|
|---------------------|------------------|------------------|
|          2          |      Lebron      |        1         |
|---------------------|------------------|------------------|


table2
|---------------------|------------------|
|       parentid      |    parentname    |   
|---------------------|------------------|
|          1          |      Jordan      |
|---------------------|------------------|

我要选择这样的输出

result
|---------------------|------------------|------------------|---------------- 
--
|       parentid      |    parentname    |    childrenid    |  childrenname
|---------------------|------------------|------------------|------------------
|          1          |      Jordan      |     1,2          |  Kobe,Jordan
|---------------------|------------------|------------------|------------------

这可能发生吗?在此先感谢,我已经使用了此查询,但是行重复了

select * from table2 left join table1 ON table1.parentid = table2.parentid

2 个答案:

答案 0 :(得分:0)

不可能,您必须使用左连接,这将导致两行,其中一行用于科比,另一行用于Lebron。

答案 1 :(得分:0)

在mysql中使用GROUP_CONCAT功能

select parentname,
GROUP_CONCAT(student_id SEPARATOR ',') AS childrenid,
GROUP_CONCAT(studentname SEPARATOR ',') childrenname  
from table2 p left join table1 s on
p.parentid=s.parentid
group by parentname

parentname  childrenid  childrenname
Jordan       1,2        Kobe,Lebron

http://www.sqlfiddle.com/#!9/4d9127/2