<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      在ADO使用SELECT語法6

      [摘要]子查詢 在一個SELECT、SELECT...INTO、INSERT...INTO、DELETE、或UPDATE 表達式中,可以包括SELECT表達式,這個SELECT表達式叫做子查詢(sub query)。您可以使用三種語法建立子查詢:表達式 [ANY ALL SOME] (子查詢...
      子查詢

          在一個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如下,[SELECT 姓名,科目,分數 From 考試 Where 科目 = '算術' and 分數 >= Some (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 分數 >= Some (SELECT 分數 From 考試 Where 科目='算術' and 姓名='張三')"

      rs2.Open SqlStr,conn1,1,1

      Response.Write "<p>Some高于張三算術任何分數"

      Do while not rs2.EOF

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

      rs2.MoveNext

      Loop

      rs2.Close

      %>

          以上的 ASP程式rs24.asp,在用戶端使用瀏覽器,瀏覽執行的結果,顯示分數大于或等于張三任何算術分數的記錄。

      Select...Into

      Select...Into將查詢的結果,建立一個產生的表。

      語法如下:

      SELECT 字段1[,字段2[, ...]] INTO 新表 [IN 外部表]
      FROM 表

      新表的名稱不可與現存表的名稱相同,否則將會發生錯誤。

      Select...Into所建立的新表,其字段的資料類型及大小與所查詢的表相同。

      讓我們看一個于ASP程式當中使用這個SQL指令的例子。

          譬如ASP程式rs9.asp如下,[Select * Into 電腦 From 產品 Where 種類 = '電腦'] 將 [產品] 表中所有 [種類] 為 [電腦] 的紀錄產生一個新的 [電腦] 表:

      <%

      Set conn1 = Server.CreateObject("ADODB.Connection")

      conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"

      sql = "Select * Into 電腦 From 產品 Where 種類 = '電腦'"

      Set a = conn1.Execute(sql)

      Set rs3 = Server.CreateObject("ADODB.Recordset")

      sql = "Select * from 電腦"

      rs3.Open sql,conn1,1,1,1

      %>

      <TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>

      <TR>

      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">代號</FONT></TD>

      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">名稱</FONT></TD>

      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">價格</FONT></TD>

      <TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">數量</FONT></TD>

      </TR>

      <% Do while not rs3.EOF %>

      <TR>

      <TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("代號")%></TD>

      <TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("名稱")%></TD>

      <TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("價格")%></TD>

      <TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("數量")%></TD>

      </TR>

      <%

      rs3.MoveNext

      Loop

      rs3.Close

      %>

      </TABLE>

          以上的 ASP程式rs9.asp,在用戶端使用瀏覽器,瀏覽執行的結果,顯示新 [電腦] 表的記錄。



      日韩精品一区二区三区高清