不知道你的数据库是什么? 如果mysql5.0以上或者sqlserver,可以用联查实现 select * from 表名 a where 主键名 in (select top 2 主键名 from 表名 b where b.分类字段名=a.分类字段名) order by 分类字段名否则只能用循环,两次查找数据库了
order by 时间倒序 limit 0,2
不会写sql语句,我用php实现的,下面是函数 function bulidlist($onekid,$lines=2){ …… $result=mysql_query("select * from tvlist where onekid=$onekid order by threekid,tvid desc"); while ($row=mysql_fetch_array($result)){ if($type[3]!=$row['threekid']){ $type[3]=$row['threekid']; $n=0; }else{ $n++; if($n>$lines-1)continue; }
…… }
应该要查询二次数据库才做的到吧。 循环查询分类的TOP2条记录。。 $result=mysql_query("SELECT BigClass FROM BigClass ORDER BY ID DESC"); while ($row=mysql_fetch_array($result)){ $sql = "select * from tvlist where onekid=$row['BigClass'] order by threekid,tvid desc LIMIT 0,2"; ..... }
解释一下: 我上面那段代码,bulidlist函数的第一个参数$onekid是一级分类的id,这个一级分分类又有2级分类,我写的函数的意思是每个2级分类提取2条记录。如果没有只有1级分类,完全可以: function bulidlist($lines=2){ …… $result=mysql_query("select * from tvlist order by threekid,tvid desc"); while ($row=mysql_fetch_array($result)){ if($type!=$row['threekid']){ $type=$row['threekid']; $n=0; }else{ $n++; if($n>$lines-1)continue; }
…… }不过,还是想知道,如何用sql语句实现
select * from data_news a where ID in (select ID from data_news b where b.BigClass=a.BigClass order by PostTime DESC LIMIT 0,2) order by BigClass试试这个
想了一上午,实在想不出怎么用sql处理,就用php处理的。我的处理方法,查询一次数据库。
MYSQL数据库,求一SQL语句,每个类别取最新一条信息。表一: data_class(分类表,有两个字段)字段: ID ClassName
内容: 1 类别名一
2 类别名二
3 类别名三
4 类别名四表二: data_news(内容表,有四个字段,字段BigClass对应data_class表的ID字段)字段: ID Title BigClass PostTime
内容: 1 AAAAA 2 2007-02-01
2 BBBBB 1 2007-03-04
3 CCCCC 1 2007-04-05
4 DDDDD 3 2007-04-05
5 EEEEE 4 2007-04-05
6 FFFFF 3 2007-04-06
7 IIIII 2 2007-04-07我想按录入时间PostTime倒序,查类别BigClass为(1,2,3)这3个类的信息,每个类的信息只查最新两条。
如果mysql5.0以上或者sqlserver,可以用联查实现
select * from 表名 a
where 主键名 in (select top 2 主键名 from 表名 b where b.分类字段名=a.分类字段名) order by 分类字段名否则只能用循环,两次查找数据库了
function bulidlist($onekid,$lines=2){ …… $result=mysql_query("select * from tvlist where onekid=$onekid order by threekid,tvid desc");
while ($row=mysql_fetch_array($result)){
if($type[3]!=$row['threekid']){
$type[3]=$row['threekid'];
$n=0;
}else{
$n++;
if($n>$lines-1)continue;
}
……
}
循环查询分类的TOP2条记录。。
$result=mysql_query("SELECT BigClass FROM BigClass ORDER BY ID DESC");
while ($row=mysql_fetch_array($result)){
$sql = "select * from tvlist where onekid=$row['BigClass'] order by threekid,tvid desc LIMIT 0,2";
.....
}
我上面那段代码,bulidlist函数的第一个参数$onekid是一级分类的id,这个一级分分类又有2级分类,我写的函数的意思是每个2级分类提取2条记录。如果没有只有1级分类,完全可以:
function bulidlist($lines=2){ …… $result=mysql_query("select * from tvlist order by threekid,tvid desc");
while ($row=mysql_fetch_array($result)){
if($type!=$row['threekid']){
$type=$row['threekid'];
$n=0;
}else{
$n++;
if($n>$lines-1)continue;
}
……
}不过,还是想知道,如何用sql语句实现
where ID in (select ID from data_news b where b.BigClass=a.BigClass order by PostTime DESC LIMIT 0,2) order by BigClass试试这个
$page 从0计数
想从1技术
把结果-2!