在ADO使用SELECT语法四

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")

时间: 2024-10-12 22:54:44

在ADO使用SELECT语法四的相关文章

ADO使用SELECT语法二

接上一篇文章:WHERE可以使用下面的BETWEEN.LIKE.IN运算子.Between...AndBetween...And判断表达式的值是否落在指定的范围之中.语法为:expr Between value1 And value2 表示如果expr的值介于value1和value2之间,则Between...And运算子会返回True:否则它会返回False. 您也可以加上逻辑运算 Not expr Between value1 And value2,来判断相反的条件,即expr落在valu

在ADO使用SELECT语法三

接上一篇文章:ORDER BYORDER BY子句,可以设定排序的字段.在一个SQL表达式之中,ORDER BY子句通常放置于最后. 若要以递减顺序来进行排序(Z~A,9 ~0),须于您要递减排序的每一字段的尾部加DESC字.譬如:SELECT 姓名FROM 员工ORDER BY 工资 DESC, 年龄 表示[工资] 字段以递减顺序来进行排序,[年龄] 字段以递增顺序来进行排序. ORDER BY子句中排序的字段,不可以包含MEMO字段类型或OLE对象类型,否则会发生错误. 在ORDER BY子

在ADO使用SELECT语法五

JoinJOIN连接组合两个表中的字段记录,包括三种:INNER JOIN运算式:连接组合两个表中的字段记录.LEFT JOIN运算式:连接组合两个表中的字段记录,并将包含了LEFT JOIN左边表中的全部记录.RIGHT JOIN运算式:连接组合两个表中的字段记录,并将包含了RIGHT JOIN右边表中的全部记录.INNER JOIN设定两个表相关连的运算式,以连接组合两个表中的字段记录.INNER JOIN语法如下:FROM 表1 INNER JOIN 表2 ON 表1.字段1 比较运算子

在ADO使用SELECT语法六

子查询 在一个SELECT.SELECT...INTO.INSERT...INTO.DELETE.或UPDATE 表达式中,可以包括SELECT表达式,这个SELECT表达式叫做子查询(sub query).您可以使用三种语法建立子查询:表达式 [ANY | ALL | SOME] (子查询)表达式 [NOT] IN (子查询)[NOT] EXISTS (子查询) 子查询的一个SELECT表达式,与一般SELECT表达式的语法相同,必须包括在括号之中. 您可以使用子查询来替代SELECT表达式的

SQL select 语法

select|语法 SQL 里面最常用的命令是 SELECT 语句,用于检索数据.语法是: SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] * | expression [ AS output_name ] [, ...] [ INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table ] [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP B

sql 表内容复制 INSERT INTO Select语法

sql 表内容复制 insert into select语法 insert into 新表(字段1,字段2,.......) select 字段1,字段2,...... from 旧表 mysql教程_connect("localhost","root","123456"); mysql_select_db("db_test"); mysql_query("set names 'utf8'"); $quer

jsp基础语法 四 包含指令

什么是包含: 在页面开发的时候,一些代码难免会有重复使用的情况,比如说A页面有一段代码a,B页面和C页面都能用到a这段代码,那么B和C页面就把A页面包含进来,自然的a这段代码也被包含进BC页面了,这样就实现了B.C页面能用到a代码了,避免了重复的书写a代码. 包含的意义: 使用包含操作,可以将一些重复的代码包含进来继续使用. 一般分为如上四个区域. 真正在改变的地方只是具体内容,因为根据不同的用户浏览的不同,那么肯定这上面会存在差别  现在就有两种做法实现以上一种功能 方法一:在没有一个jsp页

MySQL进阶SELECT语法篇_Mysql

MySQL中SELECT语句的基本语法是:  SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [HIGH_PRIORITY] [DISTINCT|DISTINCTROW|ALL] select_list [INTO {OUTFILE|DUMPFILE} 'file_name' export_options] [FROM table_references [WHERE where_definition] [GROUP BY co

在ADO使用SELECT语法一

SELECT表达式接着,让我们看看SELECT表达式,SELECT用来在表中寻找符合特定条件的记录,语法如下:SELECT [关键字] { * | 表名称.* | [表名称.]字段名称1 [AS 别名1] [, [表名称.] 字段名称2 [AS 别名2] [, ...]]}FROM 表运算式 [, ...] [IN 外部表][WHERE... ][GROUP BY... ][HAVING... ][ORDER BY... ][WITH OWNERACCESS OPTION]关键字:可以用来限制返