文章出處
文章列表
簡述:
在查詢語句中包含著有另外一條查詢語句,被包含的查詢語句稱為子查詢,包含著子查詢的查詢就稱為父查詢。
總之,子查詢就是在查詢語句里嵌套一條或者多條查詢語句。
常用子查詢分類:
一、獨立子查詢
特征:子查詢語句可以獨立運行
二、相關子查詢
select * from student where majorId = (select majorId from major where majorId=student.majorId)
特征:子查詢中引用了父查詢中的字段,依賴于父查詢
子查詢的使用 |
一、子查詢做為查詢條件
描述:當一條查詢語句需要一個外部的值做為條件的時候,可以使用一個獨立的查詢先得到這個值,在將值返回進行條件的判斷。
注意1:使用子查詢做為條件的時候,子查詢的查詢結果只能返回一列的值,如果返回多列將報錯:
注意2:子查詢如果返回單列多行的結果,應該在查詢語句where 后將"="換成"in",in關鍵字可以接收多行結果集。使用"="接收多行報錯:
注意3:如果子查詢做為條件返回的是,多行多列的結果集,可以采用exists接收查詢結果
二、將子查詢做為一個結果集
select * from (select * from student where majorId=1) tab where stuGender=1
注意:將子查詢做為結果集,那么必須要為這個結果集取一個別名
三、將子查詢做為查詢語句中的某一列
select stuName,(select majorName from major where student.majorId=major.majorId) from student
四、子查詢實現分頁
方式1:
--pageIndex=2 pageSize=5
select * from (select ROW_NUMBER() over (order by did) as num ,* from DonationDetail ) tab
where num>=6 and num <=10
方式2:
--pageIndex=3 pageSize=5
select top 5 * from (select ROW_NUMBER() over (order by did) as num,* from DonationDetail) tab
where num not in (select top (3*5-5) ROW_NUMBER() over (order by did) as num2 from DonationDetail)
ROW_NUMBER() over (order by 字段):
根據指定的字段排序,對排序后的結果集的每一行添加一個不間斷的行號。
用的時候需注意:如果使用生成行號的查詢用作結果集,那么必須為該結果集取一個別名,同時生成的行號字段也要取一個別名
文章列表
全站熱搜