2010-05-04 142 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 

即提取次数的国家代码,和组就可以了。