2012-02-19 87 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