从access数据库中选取记录有件最令人丧气的事情,它们是以怎样的顺序输入到数据库内就按照怎样的顺序出来。就算你在access环境内采用sort by来改变记录视图,数据表内的记录顺序也并没有发生改变。
如果你正在使用asprecordset在网页上写出记录,那么你或许知道乱纷纷的顺序是多令人痛苦的事。但是你可能不得不经常得面对这一问题,因为并不存在什么简单方便的解决方案。好在order by 可以简化这一难题。
为了对你的结果排序,只要在select语句末尾加上order by,然后指定你需要排序的参照列即可。因此,如果你想要根据顾客的姓氏对customers表排序,那么你可以编写如下的查询语句:
sql = "select c_lastname, c_firstname, c_email from customers order by c_lastname"
这样,只要你建立了recordset而且开始把结果写到屏幕上,你就会看见数据按照字母顺序排列起来了。
多级排序
其实不仅仅可以在sql语句中进行一级排序。实际上,在很多情况下,你可能会希望指定两到三级深度的数据排序。假设你有以下数据表,其内容如下所示: [image003.gif]
先前采用的单级order by 排序是按下面的顺序取出数据的:
absurdly assured
absurd@assured.com
absolutely assured
absolutely@assured.com
crazed coder
crazy@coder.net
loosely fringe
loose@fringe.to
lunatic fringe
lune@fringe.to
hands on
hands@yes.org
显然order by 起了应有的作用。在实际的表结构下,absurdly assured 是最后的条目,但它排在检索结果的最顶端。hands on记录排最后因为 o 在以上列表中排在字母表最后。显然,absolutely按照字母表最好排在absurdly之前。为此,你需要采取第2级order by 排序标准,参照第2列进行排序:
sql = "select c_lastname, c_firstname, c_email from customers order by
c_lastname, c_firstname"
其结果将首先按照c_lastname 列排序然后按照c_firstname 列排序。假如你的数据表包含的记录比较多,仔细设计排序会令输出结果编排更为合理。
投入使用
如果你同大多数程序员一样喜欢自己动手编代码,沉湎于掌握新技术的狂热之中。何不从asp的冗长编码中转过头来尝试一下sql编码呢?下面我们将就asp编程时常见的问题以及如何在asp中高效地利用sql语句做一番探讨。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器