这个问题之前可以在某个地方问过,但无论如何我都找不到。
所以我有一个有很多评论的视频记录,每个评论都属于一个用户。另一方面,用户有很多用户朋友。
现在,当用户 X 登录并观看视频时,Y 我想首先显示他朋友的评论(按最新排序)。然后列出最近排序的其他评论。
如果可能的话,我更愿意在一个查询中创建这个逻辑。
谢谢,
在您的 ORDER BY 中,执行以下操作。请知道我知道您的架构是什么样的,所以这个查询不起作用。但是只需创建一个 1/0 值来指示用户是否是朋友,然后先按该值排序,然后再按发布/评论 id 排序
SELECT
posting.id,
IF(a.friend_id = b.criteria, 1, 0) AS is_friend
...
ORDER BY is_friend DESC, posting.id DESC
这个怎么样
Select comment of friends of X on video Y order by date
Union
Select comment on video Y where they is not friend of X order by date
使用联合。
(
SELECT 1 AS sort,*
FROM comments
INNER JOIN friends ON comments.poster_id=friends.friend_id
WHERE friends.id='123'
)
UNION
(
SELECT 2 AS sort,*
FROM comments
WHERE poster_id NOT IN(SELECT friend_id FROM friend WHERE id='123')
)
ORDER BY sort,time DESC