在ADO使用SELECT语法六

孙尚阳1117

孙尚阳1117

2016-01-29 19:03

在ADO使用SELECT语法六,在ADO使用SELECT语法六
  子查询

    在一个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 "<pAll高于张三算术所有分数"

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 "<pAny高于张三算术任何分数"

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
展开更多 50%)
分享

猜你喜欢

在ADO使用SELECT语法六

ASP
在ADO使用SELECT语法六

在ADO使用SELECT语法二

ASP
在ADO使用SELECT语法二

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

在ADO使用SELECT语法三

ASP
在ADO使用SELECT语法三

在ADO使用SELECT语法一

ASP
在ADO使用SELECT语法一

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

在ADO使用SELECT语法四

ASP
在ADO使用SELECT语法四

在ADO使用SELECT语法五

ASP
在ADO使用SELECT语法五

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

《蝙蝠侠 阿甘骑士》小兵打法技巧详解攻略

《蝙蝠侠 阿甘骑士》小兵打法技巧详解攻略

Vmware gsx 2.5+linux+oracle817ops 双机安装手册

Vmware gsx 2.5+linux+oracle817ops 双机安装手册
下拉加载更多内容 ↓