根据ID选择行,然后再根据文本框的基数选择行

时间:2014-06-05 23:06:27

标签: php mysql sql laravel eloquent

我的问题是我需要对以下数据库进行排名和分组,例如这部电影 - >最常用的文字。

所以我在下面的表中记录了与情绪反应相关的userId,filmId和文本。我想要做的是拍电影52,并获得最常用的文本,例如在这种情况下有7"文本"这是独一无二的,2是两次使用,"美丽"和"巧妙的"所以我需要为电影52获得美丽和巧妙。如何在MYSQL或Laravel Eloquent中完成?非常感谢任何信息 enter image description here

1 个答案:

答案 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处查看。