一、高階查詢:
sql-server子查詢可以分為 相關子查詢 和 巢狀子查詢
前提,假設books表如下:
巢狀子查詢的執行不依賴與外部的查詢。執行過程:
(1)執行子查詢,其結果不被顯示,而是傳遞給外部查詢,作為外部查詢的條件使用。
(2)執行外部查詢,並顯示整個結果。
巢狀子查詢一般可以分為:返回 單值的子查詢 和 返回乙個列表的子查詢 ,下面舉例說明:
1.返回單值:
--查詢所有**高於平均**的圖書名,作者,出版社和**。
use2.返回值列表tempdb
goselect
圖書名,作者,出版社,**
from
books
where ** >
(
select
**g(**)
from
books
) go
--查詢所有借閱圖書的讀者資訊
select(1)從外層查詢中取出乙個元組,將元組相關列的值傳給內層查詢。*from
readers
where 讀者編號 in
(
select
讀者編號
from
[borrow history])
go
(2)執行內層查詢,得到子查詢操作的值。
(3)外查詢根據子查詢返回的結果或結果集得到滿足條件的行。
(4)然後外層查詢取出下乙個元組重複做步驟1-3,直到外層的元組全部處理完畢。
與前面介紹過的子查詢不同,相關子查詢無法獨立於外部查詢而得到解決。該子查詢需要乙個「類編號」的值。而這個值是個變數,隨sqlsever檢索books表中的不同行而改變。
以下是解決方案:
二、分頁
方法一:(核心思想) 跳過幾條取幾條。(雙top 雙order by )
select方法二:(侷限性)(sql server2005之後的版本支援該寫法,因為要用到row_number() over()函式,在之前是沒有該函式)top3
*from
student
where studentno notin(
select
top3 studentno from
student
order
bystudentno
)order
by studentno
select*from
student
2select
*from(3
select
*,row_number()over(order
by studentno) as
myid
4from
student
5 ) as
temp
6where myid between
4and
6
邏輯 物理(增量) 兩套MySQL備份指令碼
資料備份其重要性無需多言,再細想一步,我們至少需要兩種備份 一種邏輯備份 mysqldump生成sql檔案 一種物理備份 xtrabackup可很好完成 邏輯備份在出問題時能提供更細粒度的恢復和對比 物理備份在整庫範圍的資料恢復或者增加從庫方面有著更高的效率。首先看下邏輯備份指令碼,比較簡單 bin...
Oracle比較相似結構的兩套表
出於某些原因,需要建立幾十張表,使用del 開頭,用於資料清理時記錄所清理的資料。比如表table1就對應del table1,但不幸的是,pdm檔案與正式庫表存在不一致,造成insert into del table1 select from table1未能正確插入,因此,有必要比較del 開頭...
ubuntu下管理網路的兩套方案
linux系統裡面有兩套管理網路連線的方案 1 etc network inte ces etc init.d networking 2 etc networkmanager 這兩套方案是衝突的,不能同時共存 第一套方案適應於沒有x的環境,如 伺服器,或者那些完全不需要改動連線的場合。第二套方案使用...