2011-08-22 59 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 
相關問題