考試大編輯整理:計(jì)算機(jī)軟考程序員編程輔導(dǎo)
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 "
Having Avg(分?jǐn)?shù)) >=60"
Do while not rs2.EOF
Response.Write "
" & 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 "
找出重復(fù)Having Count(代號(hào)) > 1"
Do while not rs2.EOF
Response.Write "
" & rs2("代號(hào)")
rs2.MoveNext
Loop
rs2.Close
%>
以上的 ASP程式rs23.asp,在用戶端使用瀏覽器,瀏覽執(zhí)行的結(jié)果,顯示代號(hào)重復(fù)的記錄。
Union
Union可以合并多組查詢的結(jié)果。
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 "
Having Avg(分?jǐn)?shù)) >=60"
Do while not rs2.EOF
Response.Write "
" & 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 "
找出重復(fù)Having Count(代號(hào)) > 1"
Do while not rs2.EOF
Response.Write "
" & rs2("代號(hào)")
rs2.MoveNext
Loop
rs2.Close
%>
以上的 ASP程式rs23.asp,在用戶端使用瀏覽器,瀏覽執(zhí)行的結(jié)果,顯示代號(hào)重復(fù)的記錄。
Union
Union可以合并多組查詢的結(jié)果。