上一篇中实现精选十条博文的时候,用的mysql语句是这样的:
String sql="select t1.id , t1.art_whoId , t1.art_title , t1.art_content,"+
"t1.art_count , convert(t1.art_pubTime,char),"+
"t2.user_name from tb_article as t1 , tb_user as t2 where "+
"t1.art_whoId=t2.id order by art_count desc";
其实因为我在mysql里测试只是输入了十条内容,那么久会显示所有的内容。
本来书里的的语句是sql语句,因此要显示top几,那个语句是不能用的,可以改成mysql的查询方式:
select * from tablename order by orderfield desc/asc limit position,counter;
tablename是指表名,orderfield是指属性字段,也就是哪一列,可以根据多个列中间用逗号隔开。desc是按照降序排序,asc是按升序;position 指示从哪里开始查询,如果是0则是从头开始,counter 表示查询的个数。
例如上面的语句我先在数据库里直接进行尝试查询:
可以看到根据art_count字段降序排序返回了结果,这里面还有一些其他约束,where后面的t1.art_whoId=t2.id,因为是在用户和文章两个表里的,from是两个表,约束id这个外键一样的条件。
所以这里因为我只有十条数据,就返回了所有,想实现精选的某top几个博文,如果按照sql语句,可以直接用途topN操作。
mysql的语法是后面加limit,这个例子我试试最后加上limit 0,5 也就是返回访问量前五条的博文
结果是这样的,所以我们稍作更改,精选博文限定某前几篇的功能就能够实现了。
结果是这样的:
可以看到只显示了五条。