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

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

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

【问题讨论】:

    标签: php mysql sql 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

    【讨论】:

    • 刚刚检查并看到了这篇文章,它运行良好!非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-03
    • 2017-05-08
    • 2017-06-04
    相关资源
    最近更新 更多