如何从每个类别获取最新帖子

时间:2014-05-30 00:29:23

标签: php mysql sql

我用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'];
    }
?>

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

健康

健康类别的最新帖子

运动

体育类别的最新帖子

世界

世界类别的最新帖子

3 个答案:

答案 0 :(得分:3)

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

当您想要每个类别中的三篇最新帖子时,您可以在group by上使用min语句和date_posted功能。

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和正确的行以获取其他值。

答案 1 :(得分:1)

$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]; 
    };

应该这样做。

答案 2 :(得分:0)

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