sql 學習隨筆1 子查詢

2021-08-30 14:11:32 字數 1550 閱讀 1201

資料如下:

name val memo

a    2   a2(a的第二個值)

a    1   a1--a的第乙個值

a    3   a3:a的第三個值

b    1   b1--b的第乙個值

b    3   b3:b的第三個值

b    2   b2b2b2b2

b    4   b4b4

b    5   b5b5b5b5b5

*/--

建立表並插入資料:

create table tb(name varchar(10),val int,memo varchar(20))

insert into tb values('a', 2, 'a2(a的第二個值)')

insert into tb values('a', 1, 'a1--a的第乙個值')

insert into tb values('a', 3, 'a3:a的第三個值')

insert into tb values('b', 1, 'b1--b的第乙個值')

insert into tb values('b', 3, 'b3:b的第三個值')

insert into tb values('b', 2, 'b2b2b2b2')

insert into tb values('b', 4, 'b4b4')

insert into tb values('b', 5, 'b5b5b5b5b5')

go

按name分組取第一次出現的行所在的資料。

select a.* from tb a where val = (select top 1 val from tb where name = a.name) order by a.name
什麼是子查詢

1.子查詢是巢狀在其他查詢中的常規的t-sql查詢(用括號括起來),當需要乙個select語句作為資料部分的基礎或另乙個查詢中的條件的要素時,就是建立子查詢。

2.子查詢滿足的需求:

(1).把乙個查詢分解成一系列的邏輯步驟。

(2).提供乙個列表作為where子句和 [ in | exists | any | all] 的目標物件。

(3).提供由父查詢中每一條記錄驅動的查詢。

一.巢狀的子查詢

1.巢狀子查詢只朝乙個方向進行——要麼返回乙個而用於外部查詢的值,要麼返回乙個與in運算子一起使用的的值的列表。

2.巢狀子查詢中,內部查詢只處理一次。

3.與null比較總會得到null。如果允許null在子查詢中出現,則在與not in相比較時,外部查詢中的所有行都會被確定為錯誤的——這將返回空的列表。

2.any, some和all

二.相關子查詢

1.執行步驟:

(1)外部查詢得到一條記錄並將其傳入到內部查詢。

(2)內部查詢基於傳入的值執行。

(3)內部查詢從其結果中把值傳回到外部查詢,外部查詢使用這些值來完成其處理。 

SQL入門學習(3)子查詢

目錄 普通子查詢 返回乙個值的普通子查詢 返回一組值的普通子查詢 使用any 返回一組值的普通子查詢 使用all 相關子查詢 子查詢分為普通子查詢和相關子查詢。他們執行順序是不一樣的。執行順序 先執行子查詢,子查詢返回結果之後,再執行父查詢。例 查詢與 劉偉 老師職稱相同的教師號 姓名。select...

學習隨筆 1

大學四年很快就要過去了,這個學期我要做畢業設計,題目是基於twincat的機械人運動控制系統的設計。說實話,我校的機械設計製造及其自動化專業雖然在國內名列前茅,但對於本科階段的教育過於注重設計與製造,而對於其自動化的部分則有明顯輕視 也可能是因為我們沒有立足自動化的課程設計吧,反正各種課設使我具備了...

SQL多條件查詢子查詢SQL多條件查詢子查詢

多條件搜尋時where 1 1並不高效,如果使用這種方法,在資料庫中會做全表查詢 對每行資料都進行掃瞄比對 會無法使用索引等優化查詢的策略,建立的索引會暫時失效。case函式 case必須和end一起使用,下接when then select 數學成績 case when math 100 then...