我的问题是我需要对以下数据库进行排名和分组,例如这部电影 - >最常用的文字。
所以我在下面的表中记录了与情绪反应相关的userId,filmId和文本。我想要做的是拍电影52,并获得最常用的文本,例如在这种情况下有7"文本"这是独一无二的,2是两次使用,"美丽"和"巧妙的"所以我需要为电影52获得美丽和巧妙。如何在MYSQL或Laravel Eloquent中完成?非常感谢任何信息
答案 0 :(得分:1)
在连接中声明一个变量,并在分组查询中递增它,但一定要在内部查询中排序,否则排名将没有值。然后从内部查询中选择等级小于或等于所需等级的内部查询。
SELECT FILMID, TEXT
FROM (
SELECT FILMID, TEXT, COUNT(*), @r:=@r+1 AS RANK
FROM filmReview
JOIN (SELECT @r:=0) R
GROUP BY FILMID, TEXT
ORDER BY FILMID, COUNT(*) DESC, TEXT
) T
WHERE RANK <= 2
在SQLFiddle处查看。