我目前正在为我的网站制作一个“搜索引擎”,但我遇到了困难。
这是我目前的查询:
SELECT * FROM posts WHERE title like '$query%' ORDER BY `title` DESC LIMIT 10
表格帖子中有超过10k行。
我还有另一张桌子:订阅。订阅的表由2列组成,post_id和post_title。
当用户搜索时,我想向他显示10个帖子(与用户搜索关键字相关),首先是他订阅的帖子(因此在订阅的表中),然后是其他帖子。如果他订阅了超过10个帖子,则应显示10个订阅帖子。如果他订阅的数量少于10个(例如5个),那么这5个订阅的帖子应该显示,其他5个未订阅与他的搜索关键词相关。
我期待着你的回答,
谢谢
答案 0 :(得分:1)
首先,不清楚为什么在GROUP BY max(sender_id, receiver_id), min(sender_id, receiver_id)
表格中post_title
对您的数据进行非规范化。
现在,假设查询仅依赖subscribed
表中的title
列,您可以利用posts
来获得所需的结果:
UNION ALL
这是 SQLFiddle 演示