我们可以利用HAVING子句决定应显示的记录,譬如ASP程式rs23.asp如下,[SELECT 姓名,科目,Avg(分数) As 平均 From 考试 Group By 姓名,科目 Having Avg(分数) >=60],使用Having Avg(分数) >=60找出平均分数大于或等于60分的记录:
<%
Set conn1 = Server.CreateObject("ADODB.Connection")
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")