国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > ASP > 正文

在ADO使用SELECT語法四

2024-05-04 11:07:42
字體:
供稿:網(wǎng)友
HAVING

    HAVING使用于SELECT 表達(dá)式中,篩選已經(jīng)GROUP BY統(tǒng)計(jì)的記錄。在GROUP BY統(tǒng)計(jì)記錄后,HAVING將篩選與HAVING子句中條件相吻合的記錄。

語法如下:

SELECT fieldlist
FROM table
WHERE selectcriteria
GROUP BY groupfieldlist
[HAVING groupcriteria]

.groupcriteria表示決定應(yīng)篩選的統(tǒng)計(jì)記錄。

    HAVING與WHERE相類似,是用來決定選取哪些記錄。當(dāng)使用GROUP BY來統(tǒng)計(jì)記錄后,HAVING會(huì)決定應(yīng)顯示的記錄,譬如:

SELECT 產(chǎn)品名稱

FROM 產(chǎn)品

GROUP BY 分類

HAVING 單價(jià) > 1000

    一個(gè)HAVING子句最多可包含40個(gè)運(yùn)算式,運(yùn)算式之間將由AND或OR等邏輯運(yùn)算子來連結(jié)。

讓我們看一個(gè)于ASP程式當(dāng)中使用這個(gè)SQL指令的例子。

    我們可以利用HAVING子句決定應(yīng)顯示的記錄,譬如ASP程式rs23.asp如下,[SELECT 姓名,科目,Avg(分?jǐn)?shù)) As 平均 From 考試 Group By 姓名,科目 Having Avg(分?jǐn)?shù)) >=60],使用Having Avg(分?jǐn)?shù)) >=60找出平均分?jǐn)?shù)大于或等于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(分?jǐn)?shù)) As 平均 From 考試 Group By 姓名,科目 Having Avg(分?jǐn)?shù)) >=60"

rs2.Open SqlStr,conn1,1,1

Response.Write "<p>Having Avg(分?jǐn)?shù)) >=60"

Do while not rs2.EOF

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

rs2.MoveNext

Loop

rs2.Close

%>

    以上的 ASP程式rs23.asp,在用戶端使用瀏覽器,瀏覽執(zhí)行的結(jié)果,顯示找出平均分?jǐn)?shù)大于或等于60分的記錄。

    我們也可以利用HAVING子句找出重復(fù)的記錄,譬如ASP程式rs23.asp如下,[SELECT 代號(hào) From 產(chǎn)品 Group By 代號(hào) Having Count(代號(hào)) > 1],使用Having Count(代號(hào)) > 1找出代號(hào)重復(fù)的記錄:

<%

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 代號(hào) From 產(chǎn)品 Group By 代號(hào) Having Count(代號(hào)) > 1"

rs2.Open SqlStr,conn1,1,1

Response.Write "<p>找出重復(fù)Having Count(代號(hào)) > 1"

Do while not rs2.EOF

Response.Write "<BR>" & rs2("代號(hào)")

rs2.MoveNext

Loop

rs2.Close

%>

    以上的 ASP程式rs23.asp,在用戶端使用瀏覽器,瀏覽執(zhí)行的結(jié)果,顯示代號(hào)重復(fù)的記錄。

Union

Union可以合并多組查詢的結(jié)果。

語法如下:

查詢1 UNION [ALL] 查詢2 [UNION [ALL]查詢3 [ ... ]]

查詢?yōu)橐粋€(gè)SELECT表達(dá)式。

    當(dāng)您使用一個(gè) UNION 運(yùn)算時(shí),不會(huì)返回重復(fù)的記錄;若要返回所有的記錄,您可以于UNION后加上ALL,加上ALL執(zhí)行查詢的速度比較快。

    在一個(gè)UNION運(yùn)算中的所有查詢,字段數(shù)目必須相同。字段大小可以不同,字段資料類型也可以不同。

只有在第一個(gè)SELECT表達(dá)式中可使用別名,在其它SELECT表達(dá)式中被省略。

可以在每一個(gè)SELECT表達(dá)式中使用GROUP BY或HAVING子句,以統(tǒng)計(jì)查詢的結(jié)果。

可以在最后一個(gè)SELECT表達(dá)式使用ORDER BY 子句,以指定查詢的結(jié)果的排列順序。

讓我們看一個(gè)于ASP程式當(dāng)中使用這個(gè)SQL指令的例子。

    可以利用Union合并兩組查詢的結(jié)果,譬如ASP程式rs25.asp如下,[(SELECT 姓名,科目,分?jǐn)?shù) From 考試 Where 科目='算術(shù)' and 姓名='李四') Union (SELECT 姓名,科目,分?jǐn)?shù) From 考試 Where 科目='算術(shù)' and 姓名='張三')],使用Union合并兩組SELECT查詢的結(jié)果,一組為查詢李四的算術(shù)成績記錄,另一組查詢張三的算術(shù)成績記錄:

<%

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 姓名,科目,分?jǐn)?shù) From 考試 Where 科目='算術(shù)' and 姓名='李四') Union (SELECT 姓名,科目,分?jǐn)?shù) From 考試 Where 科目='算術(shù)' and 姓名='張三')"

rs2.Open SqlStr,conn1,1,1

Response.Write "<p>Union"

Do while not rs2.EOF

Response.Write "<BR>" & rs2("姓名") & " " & rs2("科目") & " 分?jǐn)?shù): " & rs2("分?jǐn)?shù)")

rs2.MoveNext

Loop

rs2.Close

%>

    以上的 ASP程式rs25.asp,在用戶端使用瀏覽器,瀏覽執(zhí)行的結(jié)果,顯示李四和張三的算術(shù)分?jǐn)?shù)記錄。 
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 张家口市| 五大连池市| 乐都县| 衡南县| 白朗县| 麦盖提县| 北京市| 斗六市| 高清| 宁乡县| 城固县| 太白县| 高邑县| 乳山市| 铁力市| 芦溪县| 霞浦县| 长白| 自贡市| 阳江市| 雷州市| 秦皇岛市| 剑川县| 罗田县| 长治市| 青阳县| 泾阳县| 阿瓦提县| 沭阳县| 七台河市| 庐江县| 始兴县| 荆州市| 辉县市| 得荣县| 青海省| 宜宾县| 清原| 安国市| 朝阳市| 南漳县|