php - 一个有点复杂的mysql查询

标签 php mysql

我目前正在一个新闻数据库网站上工作,我似乎无法创建一个查询来选择 5 篇 HitTest 门的新闻文章。受此查询影响的数据库的 2 个表是:

  • 新闻 - 包含所有新闻项目(id、作者、消息等)
  • Rates - 包含新闻项的所有评级(id、news_id、rating 等)

现在我的查询应该从表 Rates 中选择平均评级最高和投票最多的 5 个 news_id(因此:我认为按 AVG(Rating) 和 COUNT(*) 排序)。我首先尝试进行查询并立即从新闻表中获取这些 news_ids 的所有信息(使用 WHERE id IN(--查询选择 5 个 HitTest 门的 news_ids--) 子句)但是返回了我的 MySql 版本的错误不能在 WHERE IN 子句子查询中使用 LIMIT。

好吧,我希望你能帮助我解决必须选择这 5 个 news_id 的第一个查询。我现在得到的查询(但不是完全有效)是:

SELECT news_id FROM 
              (SELECT news_id, AVG(rating) AS average_r, COUNT(*) AS amt_r 
                      FROM rates 
                      GROUP BY news_id 
                      ORDER BY average_r,amt_r 
                      DESC LIMIT 5
               ) AS news_rates

或满足于我的脚本的其余部分:

$get_hot_news_ids = mysql_query("SELECT news_id FROM 
        (SELECT news_id, AVG(rating) AS average_r, COUNT(*) AS amt_r 
         FROM rates 
         GROUP BY news_id 
         ORDER BY average_r,amt_r DESC LIMIT 5) AS news_rates");

    $first = 1;
    while($news_id     = mysql_fetch_assoc($get_hot_news_ids)) {
        if(!$first) {
            $hot_news_ids .= " ,";
        }else{
            $first = 0;
        }
        $hot_news_ids .= $news_id['news_id'];
    }
    //print_r($hot_news_ids);
    $get_hot_news = mysql_query("SELECT * FROM news 
        WHERE id IN($hot_news_ids) 
        ORDER BY FIELD(id, $hot_news_ids)");

最佳答案

您确定 average_r 和 amt_r 都按降序排列吗?

SELECT news_id FROM 
              (SELECT news_id, AVG(rating) AS average_r, COUNT(*) AS amt_r 
                      FROM rates 
                      GROUP BY news_id 
                      ORDER BY average_r DESC, amt_r DESC
                      LIMIT 5
               ) AS news_rates

关于php - 一个有点复杂的mysql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5211257/

相关文章:

php - 自动填写网络表单并返回结果页面

php - 如何从 php 获取输出到 typeahead?

php - Laravel 5 无需密码登录

php - 我想开发一个制作 vAnimated 视频的应用程序如何进行?

javascript - Jquery Load() 从另一个页面获取元素 id 值时返回 [object object]

javascript - 如何在浏览器检查中获取 Ext js 元素 id 或 itemId 值

php - WooCommerce 中标题由字母和数字组成时的自定义排序产品

mysql - foreach 循环中 codeigniter 中出现 500 内部服务器错误和 undefined variable 错误?

php - 在 PHP 中给定周末和无工作日,选择具有非空值的最新日期

MySQL - 使用子查询进行分组