如果另一个表中存在列值,则对表中的行进行排序

时间:2015-05-17 16:31:58

标签: php mysql

我目前正在为我的网站制作一个“搜索引擎”,但我遇到了困难。

这是我目前的查询:

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个未订阅与他的搜索关键词相关。

我期待着你的回答,

谢谢

1 个答案:

答案 0 :(得分:1)

首先,不清楚为什么在GROUP BY max(sender_id, receiver_id), min(sender_id, receiver_id) 表格中post_title对您的数据进行非规范化。

现在,假设查询仅依赖subscribed表中的title列,您可以利用posts来获得所需的结果:

UNION ALL

这是 SQLFiddle 演示