在ADO使用SELECT语法六

2016-01-29 19:03 0 1 收藏

在ADO使用SELECT语法六,在ADO使用SELECT语法六

【 tulaoshi.com - ASP 】

  子查询

    在一个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

来源:https://www.tulaoshi.com/n/20160129/1508268.html

延伸阅读
作为一个ASP爱好者,笔者经常在ASP页面中使用ADO对象操作ODBC数据库,觉得用ASP创建WEB应用系统确定挺方便的.虽然在编程生涯中,笔者更喜欢Borland系列产品,对微软产品有点排斥,对ASP却是例外.某天,灵机一动,ADO对象是一个标准OLE对象,如果在DELPHI应用程序中能利用ADO操作数据库,应该挺不错.尤其在用DELPHI做网络数据库应用程序...
3.其它常见对象(与Delphi对应的对象): ADODB.Field:TField ADODB.Parameter: TPara ADODB.Error:EDBEngineError ADODB.Command:无 ADODB.Property:无 下面来看一个应用例子,听别人说总不如自己看实际的例子来体会。在这个例子中,将演示如何利用ADO对象来对一个数据表进行查询、增加记录、修改记录和删除记录...
标签: PHP
      数据表都已经创建起来了,假设我们已经插入了许多的数据,我们就可以用自己喜欢的方式对数据表里面的信息进行检索和显示了,比如说:可以象下面这样把整个数据表内的内容都显示出来         select * from president;     也可以只选取某一个数据行里...
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 col_name,...] [HAVING where_definition] [ORDER BY {u...
标签: ASP
  try { // create a new ADOConnection to the text file through ODBC and an existing Data Source ADOConnection conn = new ADOConnection("Provider=MSDASQL;DSN=registrations;"); // create a DataSet Command that selects all the records from the registration.txt table (which in this case is a file) ADOD...

经验教程

548

收藏

64
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部