表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
答案 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