2014-03-12 58 views
0

我有一張城市,州和拉鍊表,但如你所知,一些城市有多個郵政編碼。我想返回一個城市行,並非全部與所有拉鍊相關聯。這是用於預測文本輸入。選擇不同於幾列

cities2 Table example 
Colorado Springs | CO | 80910 | Colorado Springs, CO 
Colorado Springs | CO | 80911 
Colorado Springs | CO | 80912 

{ 
$result = mysql_query("SELECT * FROM `cities2` WHERE `city` LIKE '$city%' LIMIT 5"); 
    while($row = mysql_fetch_array($result)) 
    $cities[] = $row['city']; 
} 

我想返回以「Colo」開頭,但只有1個科羅拉多泉的前5個城市名稱。

我希望我解釋得很好。

回答

0

你只需要一組由

SELECT * FROM `cities2` WHERE `city` LIKE '$city%' GROUP BY city LIMIT 5 

,你可以通過你想要什麼都欄目組是不同的。

0
SELECT * 
    FROM cities2 
    WHERE city 
    LIKE '$city%' 
     GROUP BY city 
     LIMIT 5 
+0

完美,忘了GROUP BY,只是想DISTINCT。 – mbreezy

+0

沒問題,祝你好運! – 4EACH

0

從我肥皂箱:

  1. 使用聚合函數時,只有使用GROUP BY。使用DISTINCT代替
  2. 顯式指定您想返回的列,而不是*。
  3. 使用ORDER BY以確保一致的結果返回每次查詢被執行

我的建議時間:

SELECT DISTINCT city 
FROM cities2 
WHERE city like '$city%' 
ORDER BY city 
LIMIT 5;