2011-10-10 51 views
0

我想爲我的問題提出正確的查詢。基本上,我可能有過完全相同的結果爲100,如果我做的:預期多個結果時正確的SELECT查詢

$query = "SELECT * FROM highway WHERE state = 'VA'"; 
    $result = mysql_query($query) or die(mysql_error()); 
    while ($row = mysql_fetch_array($result)) { 
    //code 

有了這個,我會得到:

95 
    95 
    95 
    95 (and on and on...) 
    64 
    64 
    64 (and on and on...) 

什麼是正確的查詢只得到:

95 
    64 
    66 
    81 
+0

請提供'DESCRIBE公路輸出;' – Tom

回答

2

可以使用DISTINCT關鍵字:

ALLDISTINCT選項指定是否返回重複行應爲 。 ALL(默認值)指定返回的所有匹配行應爲 ,包括重複項。 DISTINCT指定從結果集中刪除 重複行。指定 選項是錯誤的。 DISTINCTROWDISTINCT的同義詞。

所以:

SELECT DISTINCT * FROM highway WHERE state = 'VA' 

但是如果你考慮到結果集的某些列時有重複,在我看來,你的數據庫表的設計可能不佳。你有沒有考慮進一步normalising他們?

+0

這些表被設置爲這樣: 狀態 - > highway->×[出口>設有 由於有在各公路多個出口,它是我可以想出最好的方式來設計它。 這正是我正在尋找的,謝謝。 – Go3Team

+0

@ Go3Team:你一定要規範化。 –

0

在您的查詢中使用GROUP BY columname

$query = "SELECT * FROM highway WHERE state = 'VA' GROUP BY columnameof9596etc."; 
+0

這也有幫助,謝謝。 – Go3Team