2010-05-04 138 views
2

在我的數據庫我有一個與國家代碼的電話號碼,看起來像MySQL查詢的麻煩

0044-123456 
0044-123456 
0014-123456 
0014-123456 
0024-123456 
0024-123456 
0034-123456 
0044-123456 
0044-123456 
0024-123456 
0034-123456 
084-123456 
084-123456 

財產以後我想國家總起來的數字,像這樣的輸出

0044 (2) 
0024 (2) 
0034 (1) 
084 (2) 
064 (5) 

是有可能用SQL查詢做到這一點?

+4

爲什麼這個社區wiki? – 2010-05-04 07:18:45

+0

所以你只是想提取破折號之前的部分?我不確定,如果我正確理解你的話。此外,這不是社區wiki的典型候選人。 – Ham 2010-05-04 07:19:25

+0

好吧,我不會連接到這裏的wiki後,我applogoies .. – Bharanikumar 2010-05-04 07:29:04

回答

3

給這一個嘗試:

SELECT count(SUBSTR(phoneNumber, 1, LOCATE("-", phoneNumber))) 
FROM tableName 
GROUP BY SUBSTR(phoneNumber, 1, LOCATE("-", phoneNumber)); 
+0

通過phoneNumber分組將不起作用,因爲它會計數唯一的數字,而不是唯一的國家代碼。 – Theo 2010-05-04 07:33:48

+0

你是對的。但替代方案應該這樣做。我會解決這個問題。 – Ham 2010-05-04 07:36:18

1

這應該做的伎倆:

SELECT phoneNumber, 
     SUBSTR(phoneNumber, 1, LOCATE("-", phoneNumber) - 1) AS countryCode, 
     COUNT(*) AS count 
    FROM phoneNumbers 
GROUP BY countryCode 

即提取次數的國家代碼,和組就可以了。