繁体   English   中英

MySQL,需要选择另一个表中具有最频繁值的行

[英]MySQL, Need to select rows that has the most frequent values in another table

我是SQL的新手,找不到解决我问题的方法。 我有两张桌子。 在表A中,我存储了很多注释,每个注释都有唯一的ID。

在表B中,我为每个带有日期时间的评论存储了每个投票(like = 1和dislike = 0)。 每次投票都会有一个条目,因此表A中的每个评论都会有很多行。

我需要检索所有评论并对它们进行排序,以使每周最喜欢的评论在顶部,但是我不确定如何。

这是我到目前为止的内容,但不确定如何继续:

SELECT * FROM comment INNER JOIN logs ON comment.c_id=logs.c_id WHERE logs.daterate >= DATE_SUB(CURDATE(), INTERVAL 8 DAY) AND logs.rated=1 

为了澄清,我需要从过去一周中评级为1的日志中获取所有条目,并按照降序排列最频繁的c_id对其进行排序,并为每行获取不同的c_id ...

请问我是否不够清楚,谢谢!

    SELECT *
      FROM comment
INNER JOIN (SELECT comment.c_id,
                   COUNT(*) AS cnt
              FROM comment
        INNER JOIN logs ON comment.c_id=logs.c_id
             WHERE logs.daterate >= DATE_SUB(CURDATE(), INTERVAL 8 DAY)
               AND logs.rated=1
          GROUP BY comment.c_id) x ON x.c_id = comment.c_id
  ORDER BY x.cnt DESC

尝试这个 -

我首先从日志表中查询了所有记录,这些记录的评分为1,并且是从当前日期算起的7天,并且也基于c_id的计数进行排序。 然后将其与COmments表连接。

SELECT Comment.* FROM comment C
INNER JOIN (SELECT logs.c_id as c_id,count(logs.c_id) as logcount FROM logs 
WHERE logs.rated=1 
AND logs.daterate BETWEEN GETDATE() AND DATEADD(day,-7,getdate())
Group by logs.c_id
order by count(logs.c_id) desc) X 

ON C.c_id = X.c_id
ORDER BY X.logcount DESC

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM