【问题标题】:MYSQL, ORDER BY LIKEMYSQL,按赞排序
【发布时间】:2023-03-24 19:40:01
【问题描述】:

我有 2 个表 Thread 和 Posts,我想搜索我的帖子并按匹配最多的线程排序。

现在我有这个:

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

【问题讨论】:

  • 你忘了问问题:)
  • 我相信问题出在主题行中:如何使用 LIKE 添加 ORDER BY?
  • @JoachimIsaksson:问题在第一行,“我想搜索我的帖子并按匹配最多的线程排序”
  • 标题中没有问题。标题实际上很垃圾,因为它只是列出了一些 MySQL 关键字。请修复它以描述您的问题

标签: mysql sql select search sql-like


【解决方案1】:

您可以添加一个联接来计算每个线程的帖子数。由于您没有从帖子中选择任何列,因此这是您需要的唯一联接。

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

【讨论】:

  • 你不是在数一个帖子的帖子数吗?我猜他想要他的 LIKE 表达式给出的匹配数......
  • @PeterG.: 有道理,并且提供了一个更简单的解决方案以及单个连接,已编辑
猜你喜欢
  • 1970-01-01
  • 2016-04-22
  • 2019-05-17
  • 1970-01-01
  • 2016-01-08
  • 1970-01-01
  • 2011-04-06
  • 2020-12-13
  • 2015-12-31
相关资源
最近更新 更多