資料如下:
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...