建立表結構 mysql
CREATE TABLE test( [id] int IDENTITY(1,1) NOT NULL PRIMARY KEY, [name] nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL, createdTime DATETIME DEFAULT GETDATE() )
使用output得到自增ID值sql
沒使用output前的寫法,用Score_Identity函數獲取自增值函數
INSERT INTO dbo.test ( name ) VALUES ( N'測試數據') SELECT SCOPE_IDENTITY();
結果以下測試
使用output得到自增值,請仔細看 output寫在 values以前fetch
INSERT INTO dbo.test ( name ) OUTPUT Inserted.id VALUES ( N'測試數據')
輸出結果:spa
返回多個字段,包括默認getdate()函數code
INSERT INTO dbo.test ( name ) OUTPUT Inserted.id,Inserted.name,Inserted.createdTime VALUES ( N'測試數據')
輸出結果:blog
用offset fetch實現分頁功能ip
用過mysql的同窗對於分頁語法特別簡單,只須要用limit就能夠完成分頁。而在SQL SERVER裏則須要用子查詢完成分頁,不過如今SQL SERVER也支持簡單的分頁,那就是用offset .. fetch來完成,不過要求SQL SERVER版本在2012及更高版本啊。get
使用Row_Number分頁語法以下:
SELECT * FROM (SELECT *,ROW_NUMBER () OVER (ORDER BY id) AS rn FROM dbo.test) AS t WHERE rn BETWEEN 11 AND 20
輸出結果
使用offset分頁,相似於linq裏的skip + take函數。
基本語法,offset 跳過的行數 rows Fetch Next 抓取的行數 rows only
SELECT * FROM dbo.test ORDER BY id OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY
輸出結果