2013-02-25 61 views
0

我有一個表,看起來像這樣只有基於ID

 
id   |   itemID  |   catID  |  Title 
---------------------------------------------------------------------------- 
0       3      4    Hello 
1       3      6    Hello 
2       4      4    Yo 
3       4      8    Yo 
4       5      2    Hi 
5       1      3    What 

我希望做一個PHP MySQL的選擇,只有得到ITEMID出現一次得到錶行的一個一次出現在MySQL的PHP​​。正如你可以看到它們是同一個項目,只是在不同的類別。

這是我試過

SELECT * FROM Table GROUP BY itemID 

似乎並沒有工作,但它仍然只是表明重複。

+0

我認爲唯一的就是你要找的關鍵字。 – dutt 2013-02-25 19:49:33

+1

如果只有一個,你還需要其他列,哪一個?第一個,最後一個?這對你來說可能沒有關係,但它對如何構建查詢很重要。 – 2013-02-25 19:50:42

+0

catID和常規ID無關緊要,我只需要標題。 – Talon 2013-02-25 19:55:54

回答

0

就MySQL而言,數據是唯一的,因爲你需要所有的列。你必須更具體。

你只想要itemID(或其他列)?然後這樣說:

select [column] from Table GROUP BY itemID

你想要的特定項目ID的最後一個項目?然後說:

select * from Table where itemID = 1 ORDER BY id DESC

還是第一個?

select * from Table where itemID = 1 ORDER BY id

如果這些都不是你想要的東西,那麼你可能需要調整你的表。它看起來像你想爲你的項目不同的類別。如果是這樣,那麼你會想將它們分成一個新的連接表,因爲你有一個項目和類別之間的多對多關係。我建議您閱讀數據庫規範化,以免重複數據(例如您使用的是標題)。

0

如果你想要的所有不同itemIDs,你當然可以做所有不同itemIDs的一個選擇,然後做基於第一查詢結果的層層選拔需要很長的路。

select distinct(`itemID`) from Table 

然後在你的PHP代碼,做這樣的事情:

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
    { 
    $itemID = $row['itemID']; 

    $sql2 ="SELECT * FROM Table WHERE 1 and `itemID`=\"$itemID\" limit 1"; 
    $result2 = @mysql_query($sql2, $connection); 
    while ($row2 = mysql_fetch_array($result2))  
     { 
      $id = $row2['id']; 
      $itemID = $row2['itemID']; 
      $catID = $row2['catID']; 
      $Title = $row2['Title']; 
     } 
    } 
+0

這不是最有效的方法,但是......就像任何對皮膚進行皮膚處理的方法一樣,你最終會得到一隻帶皮的貓。請不要真的給貓擦皮。毛。 – 2013-02-25 20:08:18