【问题标题】:How to get latest posts from each category如何获取每个类别的最新帖子
【发布时间】:2014-07-19 15:50:09
【问题描述】:

我用 PHP 和 MySQL 创建了一个网站,我有一个带有以下行 ID 的表 - POST TITLE - 类别。现在我在三个不同类别(运动、健康、世界)上发表了 10 篇文章,我想要一个 sql 来获取每个类别的最新文章。

我试过了

<?php 
    $scat_sql = mysql_query("select * from videos where category = 'sport' order by id desc limit 1"); 
    while($scat_row = mysql_fetch_assoc($scat_sql)){
        $scat_link = $scat_row['post title'];
    }
?>

但问题是我需要为每个类别重复此代码。 我想要的输出如下所示:

健康

健康类最新帖

运动

运动类最新帖

世界

世界类最新帖

【问题讨论】:

    标签: php mysql sql


    【解决方案1】:

    如果您还没有 datetime 字段,我会在表中添加一个 date_posted 之类的字段。添加新帖子时,将当前日期和时间与其他字段一起插入date_posted

    当您想要每个类别中的三个最新帖子时,您可以使用group by 语句以及date_posted 上的min 函数。

    select * from videos
    inner join (
        select min(date_posted) date_posted from videos group by category
    ) recent on (recent.date_posted = videos.date_posted);
    

    内部连接中的选择获取每个类别的最新 date_posted。内连接匹配并连接 date_posted 与正确的行以获取其他值。

    【讨论】:

      【解决方案2】:
      $command = "SELECT * FROM videos WHERE category='sport' ORDER BY id DESC LIMIT 1";
      $result = mysql_query ($command) or die ("<strong>Error:</strong> ". mysql_error());
      while ($row = mysql_fetch_array ($result))
          {
             echo $row[name_of_the_column_you_want_to_echo]; 
          };
      

      应该可以的。

      【讨论】:

        【解决方案3】:

        如果您只是想缩短代码,您可以将类别(表格)插入到数组或另一个表格中。在循环中读出该表或数组,并使查询中的表成为变量。

        【讨论】:

        • 我不想缩短我的代码我想要的是一个允许我获取每个类别(运动、健康、世界)的最新帖子的 sql。
        • 这没有回答问题。
        猜你喜欢
        • 1970-01-01
        • 2016-12-25
        • 2011-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-11
        • 2018-05-28
        相关资源
        最近更新 更多