高分求高人讨论:oracle 取排完序后记录集的前N条记录 目前考虑有如下几种方式及相应问题: 1.select * from tbname where rownum<=10 order by FldName 存在问题:获得的记录并不是排完序后的前10条记录。怀疑是先取的10条,然后对这10条进行的排序。 2.select * from (select * from tbname order by FldName) where rownum<=10 存在问题:用些方式获得的记录集能满足我的要求。 但是却不能通过ADO对该记录结果进行编辑,C++ BUILDER代码如下: ADOQry->Edit(); ADOQry->FieldByName("STATE")->AsString = "1"; ADOQry->Post();//执行此处失败
目前想到的解决方式:1.用2中的SQL语句获得记录集,然后取该记录集中的主健,用主健做该记录的更新操作: 更新方式:(1).SQL语句“UPDATE tbname set STATE='1' where keyfld=keywords” (2).重新获得记录集:select * from tbname where keyfld=keywords, 然后: ADOQry->Edit(); ADOQry->FieldByName("STATE")->AsString = "1"; ADOQry->Post(); 存在问题:需要有主键 求:1.其他“效率高”的解决方式。 2.我所列的解决方式,如果没有主键该怎么做?