当前位置: 首页 > 图文教程 > 网络编程 > ASP > 在ADO使用SELECT语法六

ASP
ASP实例代码:搞个长文章分页代码
说说对象的复制
多个函数验证同一表单
查询某个字段没有值的所有记录的SQL语句怎么写?
ASP实例:一个简单的ASP无组件上传类
ASP实例讲解:用分页符实现长文章分页显示
ASP实例:动态网页中常用的6个ASP程序
ASP实例:词语搭配游戏的制作
ASP实例学习:随机生成文件名的函数
asp实例:测试WEB服务器
ASP实例:计数器程序详解
预防ASP网站被黑 彻底了解ASP木马
分享:XML HTTP Request的属性和方法简介
ASP架设:给每个IIS站点建立一个用户
ASP技巧:判断远程图片是否存在
故障解决:解决ASP脚本运行超时的方法
再说ASP输出N行N列表格
怎么判断一个对象是否已被释放
ASP实现网页打开任何类型文件都保存的方法
ASP技巧:利用函数InstrRev()获取当前文件名

ASP 中的 在ADO使用SELECT语法六


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 37 ::
收藏到网摘: n/a

  子查询

    在一个SELECT、SELECT...INTO、INSERT...INTO、DELETE、或UPDATE 表达式中,可以包括SELECT表达式,这个SELECT表达式叫做子查询(sub query)。

您可以使用三种语法建立子查询:



表达式 [ANY | ALL | SOME] (子查询)


表达式 [NOT] IN (子查询)


[NOT] EXISTS (子查询)


    子查询的一个SELECT表达式,与一般SELECT表达式的语法相同,必须包括在括号之中。

    您可以使用子查询来替代SELECT表达式的运算式,或在WHERE或 HAVING子句中的运算式。

    关键字ANY和SOME的意义相同,用来选择符合子查询的任何记录的比较条件。譬如下例将返回产品中单价大于订单中任何数量大于100的记录:

SELECT * FROM 产品

WHERE 单价 > ANY

(SELECT 单价 FROM 订单

WHERE 数量 > 100)

关键字ALL,用来选择符合子查询的所有记录的比较条件。

譬如在上例中将ANY改为ALL,将返回产品中单价大于订单中所有数量大于100的记录。

    关键字IN 述语来撷取在主查询中且只有在子查询之中包含相同值的某些记录。下列范例会返回以百分之 25 或更高的折扣卖出的所有产品:

关键字IN,用来选择在子查询之中的记录。譬如下例将返回订单中数量 > 100的记录:

SELECT * FROM 产品

WHERE 产品代号 IN

(SELECT 产品代号 FROM 订单

WHERE 数量 > 100)

相反地,关键字NOT IN,用来选择不在子查询之中的记录。

在true/false比较中,可以使用EXISTS关键字,来决定子查询是否会返回任何的记录。

    关键字ALL的ASP例子,譬如ASP程式rs24.asp如下,[SELECT 姓名,科目,分数 From 考试 Where 科目 = '算术' and 分数 >= All (SELECT 分数 From 考试 Where 科目='算术' and 姓名='张三')] 找出分数大于或等于张三的算术考试的算术记录:

<%

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 分数 >= All (SELECT 分数 From 考试 Where 科目='算术' and 姓名='张三')"

rs2.Open SqlStr,conn1,1,1

Response.Write "<p>All高于张三算术所有分数"

Do while not rs2.EOF

Response.Write "<BR>" & rs2("姓名") & " " & rs2("科目") & " 分数: " & rs2("分数")

rs2.MoveNext

Loop

rs2.Close

%>

    以上的 ASP程式rs24.asp,在用户端使用浏览器,浏览执行的结果,显示分数大于或等于张三的算术考试的算术记录。

Any

    关键字ANY用来选择符合子查询的任何记录的比较条件,譬如ASP程式rs24.asp如下,[SELECT 姓名,科目,分数 From 考试 Where 科目 = '算术' and 分数 >= Any (SELECT 分数 From 考试 Where 科目='算术' and 姓名='张三')] 找出分数大于或等于张三任何算术分数的记录:

<%

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 分数 >= Any (SELECT 分数 From 考试 Where 科目='算术' and 姓名='张三')"

rs2.Open SqlStr,conn1,1,1

Response.Write "<p>Any高于张三算术任何分数"

Do while not rs2.EOF

Response.Write "<BR>" & rs2("姓名") & " " & rs2("科目") & " 分数: " & rs2("分数")

rs2.MoveNext

Loop

rs2.Close %>

    以上的 ASP程式rs24.asp,在用户端使用浏览器,浏览执行的结果,显示分数大于或等于张三任何算术分数的记录。

Some

    关键字SOME和ANY的意义相同,用来选择符合子查询的任何记录的比较条件,譬如ASP程式rs24.asp如下,[SELEC