我的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 举报,一经查实,本站将立刻删除。