建立表结构 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
输出结果