广

ASP编程

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    在ADO使用SELECT语法四

    2018-04-16 10:57:23 次阅读 稿源:互联网
    零七广告
    HAVING
      
          HAVING使用于SELECT 表达式中,筛选已经GROUP BY统计的记录。在GROUP BY统计记录后,HAVING将筛选与HAVING子句中条件相吻合的记录。
      
      语法如下:
      
      SELECT fieldlist
      FROM table
      WHERE selectcriteria
      GROUP BY groupfieldlist
      [HAVING groupcriteria]
      
      .groupcriteria表示决定应筛选的统计记录。
      
          HAVING与WHERE相类似,是用来决定选取哪些记录。当使用GROUP BY来统计记录后,HAVING会决定应显示的记录,譬如:
      
      SELECT 产品名称
      
      FROM 产品
      
      GROUP BY 分类
      
      HAVING 单价 > 1000
      
          一个HAVING子句最多可包含40个运算式,运算式之间将由AND或OR等逻辑运算子来连结。
      
      让我们看一个于ASP程式当中使用这个SQL指令的例子。
      
          我们可以利用HAVING子句决定应显示的记录,譬如ASP程式rs23.asp如下,[SELECT 姓名,科目,Avg(分数) As 平均 From 考试 Group By 姓名,科目 Having Avg(分数) >=60],使用Having Avg(分数) >=60找出平均分数大于或等于60分的记录:
      
      <%
      
      Set conn1 = Server.CreateObject("ADODB.Connection")
      
      conn1.Open "DBQ=" & Server.MapPath("ntopsamp.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
      
      Set rs2 = Server.CreateObject("ADODB.Recordset")
      
      SqlStr = "SELECT 姓名,科目,Avg(分数) As 平均 From 考试 Group By 姓名,科目 Having Avg(分数) >=60"
      
      rs2.Open SqlStr,conn1,1,1
      
      Response.Write "<p>Having Avg(分数) >=60"
      
      Do while not rs2.EOF
      
      Response.Write "<BR>" & rs2("姓名") & " " & rs2("科目") & " 平均: " & rs2("平均")
      
      rs2.MoveNext
      
      Loop
      
      rs2.Close
      
      %>
      
          以上的 ASP程式rs23.asp,在用户端使用浏览器,浏览执行的结果,显示找出平均分数大于或等于60分的记录。
      
          我们也可以利用HAVING子句找出重复的记录,譬如ASP程式rs23.asp如下,[SELECT 代号 From 产品 Group By 代号 Having Count(代号) > 1],使用Having Count(代号) > 1找出代号重复的记录:
      
      <%
      
      Set conn1 = Server.CreateObject("ADODB.Connection")
      
      conn1.Open "DBQ=" & Server.MapPath("ntopsamp.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
      
      Set rs2 = Server.CreateObject("ADODB.Recordset")
      
      SqlStr = "SELECT 代号 From 产品 Group By 代号 Having Count(代号) > 1"
      
      rs2.Open SqlStr,conn1,1,1
      
      Response.Write "<p>找出重复Having Count(代号) > 1"
      
      Do while not rs2.EOF
      
      Response.Write "<BR>" & rs2("代号")
      
      rs2.MoveNext
      
      Loop
      
      rs2.Close
      
      %>
      
          以上的 ASP程式rs23.asp,在用户端使用浏览器,浏览执行的结果,显示代号重复的记录。
      
      Union
      
      Union可以合并多组查询的结果。
      
      语法如下:
      
      查询1 UNION [ALL] 查询2 [UNION [ALL]查询3 [ ... ]]
      
      查询为一个SELECT表达式。
      
          当您使用一个 UNION 运算时,不会返回重复的记录;若要返回所有的记录,您可以于UNION后加上ALL,加上ALL执行查询的速度比较快。
      
          在一个UNION运算中的所有查询,字段数目必须相同。字段大小可以不同,字段资料类型也可以不同。
      
      只有在第一个SELECT表达式中可使用别名,在其它SELECT表达式中被省略。
      
      可以在每一个SELECT表达式中使用GROUP BY或HAVING子句,以统计查询的结果。
      
      可以在最后一个SELECT表达式使用ORDER BY 子句,以指定查询的结果的排列顺序。
      
      让我们看一个于ASP程式当中使用这个SQL指令的例子。
      
          可以利用Union合并两组查询的结果,譬如ASP程式rs25.asp如下,[(SELECT 姓名,科目,分数 From 考试 Where 科目='算术' and 姓名='李四') Union (SELECT 姓名,科目,分数 From 考试 Where 科目='算术' and 姓名='张三')],使用Union合并两组SELECT查询的结果,一组为查询李四的算术成绩记录,另一组查询张三的算术成绩记录:
      
      <%
      
      Set conn1 = Server.CreateObject("ADODB.Connection")
      
      conn1.Open "DBQ=" & Server.MapPath("ntopsamp.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
      
      Set rs2 = Server.CreateObject("ADODB.Recordset")
      
      SqlStr = "(SELECT 姓名,科目,分数 From 考试 Where 科目='算术' and 姓名='李四') Union (SELECT 姓名,科目,分数 From 考试 Where 科目='算术' and 姓名='张三')"
      
      rs2.Open SqlStr,conn1,1,1
      
      Response.Write "<p>Union"
      
      Do while not rs2.EOF
      
      Response.Write "<BR>" & rs2("姓名") & " " & rs2("科目") & " 分数: " & rs2("分数")
      
      rs2.MoveNext
      
      Loop
      
      rs2.Close
      
      %>
      
          以上的 ASP程式rs25.asp,在用户端使用浏览器,浏览执行的结果,显示李四和张三的算术分数记录。
     

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告