惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
Martin Fowler
Martin Fowler
D
Docker
F
Full Disclosure
Recent Announcements
Recent Announcements
MyScale Blog
MyScale Blog
美团技术团队
Microsoft Azure Blog
Microsoft Azure Blog
B
Blog
A
About on SuperTechFans
IT之家
IT之家
P
Proofpoint News Feed
有赞技术团队
有赞技术团队
V
V2EX
阮一峰的网络日志
阮一峰的网络日志
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
雷峰网
雷峰网
WordPress大学
WordPress大学
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 【当耐特】
V
Visual Studio Blog
Hugging Face - Blog
Hugging Face - Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
Microsoft Security Blog
Microsoft Security Blog
U
Unit 42
腾讯CDC
Stack Overflow Blog
Stack Overflow Blog
B
Blog RSS Feed
I
InfoQ
N
Netflix TechBlog - Medium
博客园 - 三生石上(FineUI控件)
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Vercel News
Vercel News
月光博客
月光博客
F
Fortinet All Blogs
Google DeepMind News
Google DeepMind News
小众软件
小众软件
Recorded Future
Recorded Future
博客园 - Franky
Blog — PlanetScale
Blog — PlanetScale
云风的 BLOG
云风的 BLOG
C
Check Point Blog
博客园 - 叶小钗
GbyAI
GbyAI
M
MIT News - Artificial intelligence
博客园 - 司徒正美

博客园 - sobaby

用vue.js重构订单计算页面 用vue.js实现购物车功能 一步步实现自己的ORM(五) 一步步实现自己的ORM(四) 将Object转换成Dictionary方法 一步步实现自己的ORM(三) 一步步实现自己的ORM(二) 一步步实现自己的ORM(一) 修复Windows XP服务扩展视图显示空白 ASP.NET MVC :MVC页面验证与授权 一起学习MVC(4)-entity SQL语句 一起学习MVC(3)-搭建项目 一起学习MVC(2)-数据库设计 一起学习MVC(1)-搭建开发环境 什么是工作流 学习WWF中 关于回调函数 ASP.net:水晶报表的5种表格设计模式 ASP.NET 安全认证(一):如何运用 Form 表单认证
Sql Server的两个小技巧
sobaby · 2017-05-31 · via 博客园 - sobaby

创建表结构 

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值

没使用output前的写法,用Score_Identity函数获取自增值

INSERT INTO dbo.test ( name ) VALUES ( N'测试数据')
SELECT SCOPE_IDENTITY();

结果如下

使用output获得自增值,请仔细看 output写在 values之前

INSERT INTO dbo.test ( name ) OUTPUT Inserted.id
 VALUES ( N'测试数据') 

输出结果:

返回多个字段,包括默认getdate()函数

INSERT INTO dbo.test ( name ) OUTPUT Inserted.id,Inserted.name,Inserted.createdTime
 VALUES ( N'测试数据') 

输出结果:

用offset fetch实现分页功能

用过mysql的同学对于分页语法特别简单,只需要用limit就可以完成分页。而在SQL SERVER里则需要用子查询完成分页,不过现在SQL SERVER也支持简单的分页,那就是用offset .. fetch来完成,不过要求SQL SERVER版本在2012及更高版本啊。

使用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

输出结果