我用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'];
}
?>
但问题是我需要为每个类别重复此代码。 我想要的输出如下:
健康类别的最新帖子
体育类别的最新帖子
世界类别的最新帖子
答案 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)
如果您只想缩短代码,可以将类别(表格)插入数组或其他表格中。在循环中读出该表或数组,并使查询中的表成为变量。