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

Posted

技术标签:

【中文标题】根据 ID 选择行,然后再根据文本框的基数选择行【英文标题】:Selecting row based on ID and then again based on cardinality of text box 【发布时间】:2014-06-05 23:06:27 【问题描述】:

我的问题是我需要像这部电影一样对以下数据库进行排名和分组 -> 最常用的文本。

下面的表格记录了与情绪反应相关的 userId、filmId 和文本。我想做的是说电影 52,并获取使用最多和第二多的文本,例如在这种情况下,有 7 个“文本”是唯一的,2 个被使用了两次,“美丽”和“巧妙”,所以我需要为电影 52 获得美丽和巧妙的结果。这如何在 mysql 或 Laravel Eloquent 中完成?非常感谢您提供任何信息

【问题讨论】:

【参考方案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。

【讨论】:

刚刚检查并看到了这篇文章,它运行良好!非常感谢

以上是关于根据 ID 选择行,然后再根据文本框的基数选择行的主要内容,如果未能解决你的问题,请参考以下文章