2
如何在一行中顯示不同電話號碼的員工,其中電話號碼按列顯示?MySQL:組ID並在不同的列上顯示不同的值
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這個組,然後再做一個查詢來獲得他們的phonenumbers,但是這會做2個查詢。這裏的目標是僅使用1個查詢語句來實現此輸出。
哇!大!正是我在找的!雖然我想知道它是否可以動態處理員工的電話號碼數量?我在想,它會首先獲得最多電話號碼的員工,然後創建列並填寫列。它甚至有可能嗎? – basagabi
@basagabi - 如果員工可以擁有電話號碼的數量上限,那麼可以通過SQL(通過一些黑客行爲,建議使用應用程序代碼)。如果它是完全動態的,那麼你需要動態SQL。然而,這將是一個新問題。 – GurV
@GurV你可以幫我在這裏https://stackoverflow.com/questions/43319465/how-do-i-create-mysql-procedure-to-loop-through-table – user3637224