0

这个问题之前可以在某个地方问过,但无论如何我都找不到。

所以我有一个有很多评论的视频记录,每个评论都属于一个用户。另一方面,用户有很多用户朋友。

现在,当用户 X 登录并观看视频时,Y 我想首先显示他朋友的评论(按最新排序)。然后列出最近排序的其他评论。

如果可能的话,我更愿意在一个查询中创建这个逻辑。

谢谢,

4

3 回答 3

2

在您的 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
于 2012-05-07T04:10:05.270 回答
2

这个怎么样

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
于 2012-05-07T04:10:36.367 回答
0

使用联合。

(
  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
于 2012-05-07T04:13:10.020 回答