ORDER BY的语句使用对于ORDER BY 语句而言,默认值是升序排列,通常是不指定它。但升序的关键词为ASC,降序为DESC。 语法结构如下::
SELECT 列字段名 FROM [工作表名称$] ORDER BY 指定列字段名 升序(降序)
使用实例说明:
源数据:
查询内容
对英语成绩进行降序排列:
对英语成绩进行升序排列:
代码运行的结果如下:
代码如下:
Sub FuYun_Sql_paixu() Dim cnn As Object, rst As Object Dim Mypath As String, Str_cnn As String, Sql As String Dim i As Long Set cnn = CreateObject("adodb.connection") '以上是第一步,后期绑定ADO Mypath = ThisWorkbook.FullName '以上获取当前工作簿的路径及名称 If Application.Version < 12 Then '格式为.xls,调用下述语句 Str_cnn = "Provider=Microsoft.jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & Mypath Else '格式为.xlsx,调用下述语句 Str_cnn = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & Mypath End If cnn.Open Str_cnn '以上是第二步,建立链接 ' Sql = "SELECT * FROM [成绩单$] ORDER BY 英语 asc " 'Sql语句,查询所有数据,并按照英语成绩进行排序 [f2:i1000].ClearContents '清空[e1:i1000]区域内容 Range("f2").CopyFromRecordset cnn.Execute(Sql) 'Execute语句先执行SQL语句 '使用单元格对象的CopyFromRecordset方法将SQL查询到的内容复制到D2单元格为左上角的单元格区域 '以上是第三步,执行SQL语句并将数据读入表格指定区域 cnn.Close '关闭链接 Set cnn = Nothing '释放内存End Sub
代码解析
代码我放了一个例子,大部分的代码是一致的,只有SQL的句子不一样。
如果需要两列排序的SQL语句如下:
Sql = "SELECT * FROM [成绩单$] ORDER BY 英语 asc,数学 asc