2009-09-21 56 views
1

我有一個存儲在類別中的文章數據庫。對於我的主頁,我想抓住每個類別的一篇文章(我不關心哪一個)。但是,一些文章被交叉分到多個類別,所以他們出現了兩次。MySQL:從每個類別中抓取一行,但刪除在多個類別中發佈的重複行

我有一個名爲tblReview的文章字段(reviewID,標題,reviewText)和一個名爲tblWebsiteContent的表,它告訴網站哪些類別的文章(id,reviewID,categoryID),最後是一個名爲tblCategories的表(categoryID,categoryName)存儲類別。

我的查詢基本上加入這些表並使用GROUP BY tblCategory.categoryID。如果我嘗試在GROUP BY語句中添加'tblReview.reviewID',我最終會得到數百篇文章,而不是22(我擁有的類別數)。

我有一種感覺,這需要一個子查詢,但我的測試工作沒有奏效(不知道哪個查詢需要包含我的連接/字段列表/ where子句等)。

謝謝!

馬特

回答

0
SELECT T.categoryName, tR.headline, tR.reviewText 
FROM (
    SELECT tC.categoryName, MAX(tR1.reviewID) reviewID 
    FROM tblReview tR1 join tblWebsiteContent tWC on tR1.reviewID = tWC.reviewID 
         join tblCategory tC on tC.categoryID = tWC.categoryID 
    GROUP BY tC.categoryName) T JOIN 
    tblReview.tR on tR.reviewID = T.reviewID 

此查詢爲每個類別對應的最大reviewId的一篇文章標題爲類別(將選擇說'我不在乎哪個')

+0

我不得不修改查詢來獲取它運行: SELECT T.categoryName,tR.headline,tR.reviewText FROM(SELECT tC.categoryName,MAX(tR1.reviewID)reviewID FROM tblReview tR1的加入tblWebsiteContent TWC在tR1.reviewID = tWC.reviewID 加入tblCategory的tC在tC.categoryID = tWC.categoryID GROUP BY tC.categoryName)筆 JOIN tblReview TR上tR.reviewID = T.reviewID 它仍然不過返回重複reviewID值! :(謝謝你 – 2009-09-21 15:38:05

+0

對不起格式化,不知道如何格式化代碼在這個網站上,並找不到它的幫助頁面...本質上,我只是改變了最後一行加入 - 這是正確的嗎? – 2009-09-21 15:39:45

+0

對,我修正了這個問題 – manji 2009-09-21 15:54:24

0

嘗試使用SELECT DISTINCT。 (如果您的SELECT僅拉動文章ID這樣纔有效。)

+0

你是對的,這個工程,但不幸的是我需要所有其他領域(標題,reviewText等)和4個連接(爲了簡單起見從我的文章中刪除了其他字段)在這個查詢中,我不想在結果上運行另一個...謝謝! – 2009-09-21 15:07:36

0

SELECT DISTINCT reviewID

相關問題