我有兩個表:如何在內部不同的重複行(按字段)聯接子句
Customers -> CustomerId, Name
Phones -> PhoneId , CustomerId , Phone
該表通過加入客戶id字段。每個客戶在手機表中都有多個手機 。我只需要獲得其中一個。我怎樣才能做到這一點。
SELECT
Customers.CustomerId ,
Customers.Name ,
Phones.Phone
FROM Customers
INNER JOIN Phones ON Customers.CustomerId = Phones.CustomerId
在這種情況下,我得到的東西,如:
+----------+----+-----------+
|CustomerId|Name|Phone |
+----------+----+-----------+
|1010 |Jack|999-999-999|
+----------+----+-----------+
|1010 |Jack|888-888-888|
+----------+----+-----------+
|1010 |Jack|111-111-111|
+----------+----+-----------+
|2020 |Pit |123-123-123|
+----------+----+-----------+
|2020 |Pit |321-321-321|
+----------+----+-----------+
但我只需要一個客戶,一個電話號碼,如:
+----------+----+-----------+
|CustomerId|Name|Phone |
+----------+----+-----------+
|1010 |Jack|888-888-888|
+----------+----+-----------+
|2020 |Pit |123-123-123|
+----------+----+-----------+
我試着使用子查詢做到這一點:
SELECT
c.CustomerId ,
c.Name ,
SELECT (p.Phone FROM Phones WHERE p.CustomeId=c.CustomerId FETCH FIRST 1 ROWS ONLY)
FROM Customers c
但它窩rks VERYYYY SLLOOOW這就是爲什麼我不能使用子查詢。我怎麼能做到呢?
我們希望你有電話號碼的一些額外的細節(國家代碼是好的)。請注意,您不應該存儲格式化的數字(這是一個顯示級別的函數,並且無論如何都是上下文相關的),並且可能需要單獨的「輸入助記符表單」列(對於類似於「CUT-TREE」的內容)我不確定所有國家是否都使用相同的編碼。 –
所以當你有多個電話號碼時,你有什麼方法可以決定哪一個最適合選擇?任意的選擇可能不是一個好的解決方案。 – WarrenT