0

以下代码适用于我正在寻找的内容,但我正在尝试查看是否有更好的方法来创建有效的新闻提要。此新闻提要应该选择最近的评论和/或喜欢等,但只显示每个用户最近的(即如果约翰喜欢 2 个项目并评论了 3 个项目,则只显示最近的评论和喜欢。请注意涉及多个UNION。

SELECT * 
FROM (SELECT username, time, comment FROM comments ORDER BY time DESC) AS temp 
GROUP by username 
UNION 
SELECT * 
FROM (SELECT username, time, likes FROM likes ORDER BY time DESC) AS temp 
GROUP BY username 
ORDER BY time DESC
LIMIT 10
4

1 回答 1

0

我认为你可以JOIN在两个表上username,但这会给你额外的列而不是联合,比如:

SELECT
  c1.username,
  c1.`time` AS CommentTime,
  c1.comment,
  l1.`time` AS LikeTime,
  l1.likes
FROM comments AS c1
INNER JOIN
(
   SELECT username, MAX(`time`) LatestTime
   FROM Comments 
   GROUP BY username
) AS c2  ON c1.username = c2.username
        AND c1.`time`   = c2.LatestTime
INNER JOIN Likes l1 ON c1.username = l2.username
INNER JOIN 
(
   SELECT username, MAX(`time`) LatestTime
   FROM Likes
   GROUP BY username   
) AS l2  ON l1.username = l2.username
        AND l1.`time`   = l2.latestTime
ORDER BY c1.`time` DESC
LIMIT 10;

这将为您username提供最新的评论和最新likes的最新时间。

于 2013-02-16T09:28:41.817 回答