2012-02-19 112 views
0

我有2個表格主題和帖子,我想搜索我的帖子,並按大多數匹配的線程順序。MYSQL,ORDER BY LIKE

現在,我有這樣的:

SELECT Threads.* 
FROM Posts 
INNER JOIN Threads ON Posts.ThreadID=Threads.ThreadID 
WHERE Posts.Content LIKE '%" . $search . "%' 
    OR Posts.User LIKE '%" . $search ."%' 
+2

你忘了問一個問題:) – 2012-02-19 21:17:34

+0

我相信問題是在主題行中:你將如何使用LIKE添加一個ORDER BY? – DOK 2012-02-19 21:19:19

+1

@JoachimIsaksson:問題是在第一行,「我想搜索我的帖子,並按大多數匹配的線程排序」 – Andomar 2012-02-19 21:22:22

回答

0

你可以添加一個連接來計算每個線程的職位數目。由於您沒有從帖子中選擇任何欄目,這是您需要的唯一連接。

select t.* 
from Threads t 
join (
     select ThreadID 
     ,  count(*) as PostCount 
     from Posts 
     where p.Content LIKE '%" . $search . "%' 
       or p.User LIKE '%" . $search ."%' 
     group by 
       ThreadID 
     ) PostCount 
on  PostCount.ThreadID = t.ThreadID 
order by 
     PostCount.PostCount desc 
+0

難道你不算一個線程的帖子數量嗎?我想他會喜歡他的LIKE表達式給出的匹配數量...... – 2012-02-19 21:28:27

+0

@PeterG .:有道理,並給出了一個簡單的解決方案以及一個單一的連接,編輯 – Andomar 2012-02-19 21:34:14

+0

這正是我所期待的,謝謝你: ) – CodeIO 2012-02-19 21:39:04