日期:2014-05-16  浏览次数:20983 次

SQL 子查询和排序问题
我在做   asp.net   项目时
根据在子类表(class_db)

想在前台显示   文章列表示前9个,之后还要   art_time   (文章时间来显示)   降序排列

我的Sql语句如下

string   mysql= "select   top   9   art_id,art_title   from   art_db   where   art_c_id=(select   class_id   from   class_db   where   class_name= '游戏天地 ')   ORDER   BY   art_time   DESC ";

在前台是用   DataList   帮定的,如果不排序,是显示9个数据
但是加上   ORDER   BY   art_time   DESC   的话   她全部显示出来了,也有排序效果

------解决方案--------------------
试试

SELECT top 2 * from (select * from tablea a order by id desc)

不过也是2条
SELECT top 2 * from tablea a order by id desc

------解决方案--------------------
Access确实存在这个Bug,不过,你可以变通处理一下,如果表中存在唯一字段ID,可以这样:

string mysql= "
select top 9 art_id,art_title
from art_db
where art_c_id=(select class_id from class_db where class_name= '游戏天地 ')
ORDER BY art_time DESC, ID "; --注意:这里除了原来的降序排序外,还增加了排序列ID