所以我有一个查询来获取我关注的每个用户的最新帖子。像这样:
query = Post.select("DISTINCT ON (user_id) *")
.includes(:likes).includes(:comments)
.where(user_id: followings)
.where(silently_deleted: false)
.order(user_id: :desc, created_at: :desc)
问题是帖子不按日期排序。我真的不能sort_by
,因为我们正在分页。
有没有办法按created_at
订购,同时还要保留唯一性?
答案 0 :(得分:0)
试试这个:
query = Post.select("DISTINCT ON (user_id) *")
.includes(:likes).includes(:comments)
.where(user_id: followings)
.where(silently_deleted: false)
.order(user_id: :desc)
.order("posts.created_at DESC")
您需要显式添加表名,因为likes和comments表的列名称为created_at
答案 1 :(得分:0)
您可以使用自我加入为每个用户选择上一篇文章。
对于每个帖子,此LEFT加入同一用户的所有帖子,这些帖子稍后创建(具有比当前帖子更高的awk -F ' ' '{p=0} $5 ~ /MyClassName/ {p=1} p {print $5}' myLogFile.log
)。然后,以下id
条件仅选择那些稍后没有发布的记录,即有效地为每个用户选择最后一个帖子。
有关其他可能的解决方案,请参阅this blog帖子。最佳解决方案在很大程度上取决于帖子表的大小。
where
答案 2 :(得分:0)
使用group +:
-linkpkg