[英]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.