2013-05-29 35 views
1

所以基本上我有兩個表。這樣調用「照片」首先查找表:Mysql全文布爾搜索 - 按相關性排序和一個字段

id title 
1 Some text here 
2 Another text here 

叫「喜歡」的第二個表看起來像這樣

id photos_id user_id 
1 1   10 
2 1   11 
3 2   12 

photos_id從「照片」表對應於ID

我使用以下查詢做全文布爾搜索,然後按相關性排序

​​

根據相關性進行排序效果很好,但現在我想在相關性相同的情況下按喜歡的總數進行排序......像「按分數排序,total_likes desc」排序。任何幫助?

+0

那麼,什麼問題?您可以按兩個字段排序,完全如您所示。 – sashkello

+0

您的建議解決方案將正常工作,但結果很少具有相同的相關性。 –

+0

@sashkello是的,但我需要計算每張照片有多少首喜歡,並且我無法在上述示例中使用 – pewpewlasers

回答

3

您可以爲它做Left Join,並在這裏檢查SQLFiddle

SELECT 
    p.*, 
     MATCH (title) AGAINST ('text' IN BOOLEAN MODE) AS score , 
     COUNT(li.id) AS total_likes 
FROM photos p 
    LEFT JOIN likes li 
    ON p.id = li.photo_id 
    WHERE MATCH (p.title) AGAINST ('text' IN BOOLEAN MODE) 
    GROUP BY 
     li.photo_id 

ORDER BY 
     score , total_likes DESC 
+0

我得到這樣的語法錯誤:/ – pewpewlasers

+0

現在嘗試這個@ user1768337 –

+0

仍然沒有運氣悲傷 – pewpewlasers

相關問題