2011-08-22 152 views
1

得到这个SQL:MySQL的归国最低邮政编码

SELECT DISTINCT(LocCity), LocZipCode FROM exp_course_events order by LocCity 

和这样的数据:

INSERT INTO `exp_course_events` (`LocCity`, `LocZipCode`) VALUES 
    ('Aguadilla', '00602'), ('Akron', '44300'),('Akron', '44333'), 
    ('Albany', '12205'), ('Albuquerque', '87102'), 
    ('Albuquerque', '87109'), ('Austin', '78741'), 
    ('Austin', '78753'), ('Austin', '78757'), 
    ('Bend', '97701'), ('San Antonio', '78200'), 
    ('San Antonio', '78201'), 
    .... 
    ('San Antonio', '78207'); 

需要为LocZipCode只返回一个值,每个LocCity,prefereable最低数量LocZipCode 为LocCity。

这是导致我想:

Aguadilla, 00602 
Akron, 44300 
Albany, 12205 
Albuquerque, 87102 
Austin, 78741 
Bend, 97701 
San Antonio, 78200 
San Diego, 92108 
San Francisco, 94111 
San Juan, 00926 
Santa Clara (San Jose), 95054 
Springdale, 72762 
Springfield, 62703 
St. Louis. 63105 
Visalia, 993291 
Waco, 76705 
Warwick, 02886 
Waukesha, 53186 
West Chester, 45069 
West Des Moines, 50300 

回答

3
SELECT LocCity, MIN(LocZipCode) 
FROM exp_course_events 
GROUP BY LocCity 
ORDER BY LocCity

阅读关于这里的GROUP BY条款。

+0

1对于组由链接。请注意,'order by'子句在MySQL中并不是严格需要的(尽管它看起来不错),因为DB已经按升序排列了“group by”的输出。 – Johan

1
select LocCity, min(LocZipCode) 
from exp_course_events 
group by LocCity 
1

一个简单的GROUP BYMIN()聚合将做到这一点。只需确保将名称(例如AS LocZipCode)与MIN()列别名,以便您可以更轻松地在应用程序端获取它。

SELECT LocCity, MIN(LocZipCode) AS LocZipCode FROM exp_course_events GROUP BY LocCity; 
1
SELECT LocCity 
    , MIN(LocZipCode) 
FROM exp_course_events 
GROUP by LocCity 
order by LocCity 
相关问题