【发布时间】:2017-09-05 00:02:40
【问题描述】:
如何只在一行中显示不同电话号码的员工,其中电话号码按列显示?
Create Table Employees(
Employee_ID INT,
PhoneNumber VARCHAR(50)
);
INSERT INTO Employees VALUES (1,'111'),(1,'222'),(2,'111'),(2,'222'),(3,'111'),(3,'222'),(4,'111'),(5,'111'),(5,'222')
这是我尝试过的方法,但似乎没有用。
SELECT *
FROM Employees
WHERE PhoneNumber IN (
SELECT PhoneNumber
FROM Employees
GROUP BY PhoneNumber
HAVING COUNT(Employee_ID) > 1
)
您可以通过SQL Fiddle.查看它
输出应该是:
Employee_ID | PhoneNumber_1 | PhoneNumber_2
1 | 111 | 222
2 | 111 | 222
3 | 111 | 222
4 | 111 | null
5 | 111 | 222
假设每个员工最多只有两个电话号码。
这甚至可以使用 mysql 来显示这种结果吗?另一种方法是只获取他们所在的组的employee_ids,然后再进行一次查询以获取他们的电话号码,但这将进行2次查询。此处的目标是仅使用 1 个查询语句来实现此输出。
【问题讨论】: