SQL的 子查询
1、子查詢
在查詢語句中包含著有另外一條查詢語句,被包含的查詢語句稱為子查詢,包含著子查詢的查詢就稱為父查詢。總之,子查詢就是在查詢語句里嵌套一條或者多條查詢語句。
子查詢也可以稱為內(nèi)部查詢或內(nèi)部選擇,而包含子查詢的語句稱為外部查詢或者外部選擇
1.1子查詢的語法規(guī)則:
子查詢的select查詢總使用圓括號括起來
不能包括compute或for browse子句
如果同時指定top子句,則可能只包括order by子句
子查詢最多嵌套32層,個別查詢可能會不支持32層嵌套
任何可以使用表達(dá)式的地方都可以使用子查詢,主要它返回的是單個值
如果某個表只出現(xiàn)在子查詢中而不出現(xiàn)在外部查詢中,那么該表中的列就無法包含在輸出中
1.2 語法格式:
where 查詢表達(dá)式 [not] in(子查詢)
where 查詢表達(dá)式 比較運算符 [any|all] (子查詢)
where [not] exists (子查詢)
假設(shè)Books表如下:
然后顯示單條數(shù)據(jù)的情況,這個是高于平均價格的數(shù)據(jù)
2、嵌套查詢
嵌套查詢是指將一個查詢塊嵌套在另一個查詢塊的where子句或having短語的條件中的查詢。嵌套查詢中上層的查詢塊稱為外側(cè)查詢或父查詢,下層查詢塊稱為內(nèi)層查詢或子查詢。SQL語言允許多層嵌套,但是在子查詢中不允許出現(xiàn)order by子句,order by子句只能用在最外層的查詢中。
嵌套查詢的處理方法是:先處理最內(nèi)側(cè)的子查詢,然后一層一層地向上處理,直到最外層的查詢塊。
2.1簡單的運算符有=、<>、<、>、<= 、>=
舉一個簡單的例子
帶IN的嵌套查詢
帶EXISTS
2、Any 是一個邏輯運算符 ,它將標(biāo)量值與子查詢返回的單列值集進(jìn)行比較。它將值與子查詢返回的一組進(jìn)行比較。any運算符必須要結(jié)合比較運算符使用,雖然說我也沒用過
條件 含義
C=ANY(…) c列中的值必須與集合中的一個或多個值匹配,以評估為true。
c!=ANY(…) c列中的值不能與集合中的一個或多個值匹配以評估為true。
C>ANY(…) c列中的值必須大于要評估為true的集合中的最小值。
c<ANY(…) c列中的值必須小于要評估為true的集合中的最大值。
C>=ANY(…) c列中的值必須大于或等于要評估為true的集合中的最小值。
C<=ANY(…) c列中的值必須小于或等于要評估為true的集合中的最大值。
2、ALL運算符是一個邏輯運算符,它將標(biāo)量值與子查詢返回的單列值列表進(jìn)行比較。
他和ANY是不一樣的。他們是區(qū)別是:
All:只有當(dāng)其所有數(shù)據(jù)都滿足條件時,條件才成立
Any:只要有一條數(shù)據(jù)滿足條件,條件就成立
以下是SQL ALL運算符的語法:
WHERE column_name comparison_operator ALL (subquery)
SQL ALL運算符必須以比較運算符開頭,例如:>,>=,<,<=,<>,=,后跟子查詢。 某些數(shù)據(jù)庫系統(tǒng)(如Oracle)允許使用文字值列表而不是子查詢。這個all我也沒用過,就是老師給的文檔中的東西!
ALL的基本含義:
條件 描述
c > ALL(…) c列中的值必須大于要評估為true的集合中的最大值。
c >= ALL(…) c列中的值必須大于或等于要評估為true的集合中的最大值。
c < ALL(…) c列中的值必須小于要評估為true的集合中的最小值。
c <= ALL(…) c列中的值必須小于或等于要評估為true的集合中的最小值。
c <> ALL(…) c列中的值不得等于要評估為true的集合中的任何值。
c = ALL(…) c列中的值必須等于要評估為true的集合中的任何值。
總結(jié)
- 上一篇: ⅠB2期和ⅡA2期子宫颈腺癌及腺鳞癌新辅
- 下一篇: png转ico图标的方法