微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php-使用DISTINCT关键字的MySQL查询

我的MySQL表country_phone_codes看起来像这样

id     country_code     area_code     name
------------------------------------------------------------
1   |   93           |  93         |  AFGHANISTAN
2   |   93           |  9370       |  AFGHANISTAN - MOBILE
3   |   93           |  9375       |  AFGHANISTAN - MOBILE
4   |   355          |  355        |  ALBANIA
5   |   355          |  35568      |  ALBANIA - MOBILE - AMC
6   |   213          |  213        |  ALGERIA
7   |   213          |  2131       |  ALGERIA - CAT
------------------------------------------------------------

这些只是28000多个记录中的几个记录.我正在尝试制定一个查询,它将为我提供这样的结果-

country_code    name
-----------------------------
93            |  AFGHANISTAN
355           |  ALBANIA
213           |  ALGERIA
-----------------------------

通过使用来自country_phone_codes的SELECT disTINCT(country_code)ORDER BY country_code LIMIT 0,260,我能够获得不同的国家代码.但是,如何获得相应的国家名称

解决方法:

答案很简单,使用GROUP BY:

SELECT country_code,MIN(name)
FROM country_phone_codes
GROUP BY country_code;

GROUP BY不需要disTINCT函数和ORDER BY.由于最初的问题专门针对MysqL,因此MIN()聚合函数不是必需的,如果满足以下所有条件,则可能会看到更好的性能

>服务器是MysqL
>存储引擎是InnoDB
>示例数据的第一列是主键,条目遵循小样本建议的相同顺序,即国家名称出现在组中的所有其他名称之前.

之所以可行,是因为InnoDB存储引擎将按主键的顺序进行扫描,并且对于未聚合的列,它将使用找到的第一个值.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐