联接2个表时1列中有多个值

时间:2018-06-20 17:35:15

标签: mysql sql

表1-员工

id  empname
--------------
1   andy
2   brady

表2-员工电话号码

id number empid
----------------
1  1111   1
2  2222   2
3  3333   1
4  4444   1

需要sql查询才能显示以下内容

id empname numbers
------------------
1  andy    1111,3333,4444
2  brady   2222

3 个答案:

答案 0 :(得分:2)

如果使用MySQL,则可以使用GROUP_CONCAT函数,该函数基本上将构成组的每个值连接起来。您可以尝试以下方法:

SELECT EMP.ID,
       EMP.EMPNAME,
       GROUP_CONCAT(EPH.NUMBER) AS NUMBERS
  FROM EMPLOYEE EMP
  JOIN EMPLOYEE_PHONE EPH
    ON EMP.ID = EPH.EMPID
 GROUP BY EMP.ID

此外,如果要在值conpat内的列之后添加语法SEPARATOR“”,则要在此示例中用空格分隔

,如果您想用“”以外的值来分隔值,

答案 1 :(得分:1)

如果您使用SQL SERVER,我认为这将为您完成任务,如果没有数据的话,可能不是很准确的猜测。但!我使用了STUFF并选择了Number,然后将它们除以,并对其进行了排序

SELECT 
   t1.ID,t2v1.empname,
   STUFF((SELECT ',' + t2v2.number
          FROM Table2 t2v2
          WHERE t2v2.ID = t2v1.ID
          ORDER BY number
          FOR XML PATH('')), 1, 1, '') [numbers]
FROM Table1 t1 
inner join table2 t2v1 on t1.id = t2v1.id
GROUP BY t1.ID, t1.Name
ORDER BY 1

答案 2 :(得分:1)

尝试一下:

 SELECT e.id, e.name, CONCATENATE(ep.number, ',') as phonelist 
 FROM Employees e INNER JOIN EmployeePhone ep ON e.id = ep.empid

参考文档:http://www.peteonsoftware.com/index.php/2009/12/11/creating-a-comma-separated-list-from-a-sql-grouping/