SqlServer常用语句
2024-08-27 21:13:28
首先,写这个的原因是我其实sql语句不太行,总觉得自己写得很乱,好像也没有系统学习过,借此复习和与大家探讨
No.1 关于查询时间区间是否重叠的sql语句
问题是这样:插入之前,想查询同User是否其他请求时间重叠
表(Id,UserId,FromDate,ToDate,Reason)
select * from Request
where
UserId=@UserId
and
(
FromDate between @fromDate and @toDate
or
ToDate between @fromDate and @toDate
or
@fromDate between FromDate and ToDate
or
@toDate between FromDate and ToDate
);
--select出来有东西就是有记录与@fromDate和@toDate之间重叠
后来想想有
select * from Request
where
UserId=@UserId
and
(
FromDate > @toDate--在原有时间段之前
or
ToDate < @fromDate--在原有时间段之后
)
--搜出来的就是不重叠时间的记录
No.2 三种SqlServer分页查询语句
1)Top not in(等于查两次,性能不好)
declare @page int = 1; --页码
declare @pagesize int = 5; --每页数 SELECT TOP (@pagesize) * FROM Campaign
WHERE Id NOT IN
(
SELECT TOP ((@page-1)*@pagesize) Id FROM Campaign
ORDER BY Id
)
ORDER BY Id
2)ROW_NUMBER() OVER()方式(也是select两次,不过查询靠后的数据速度比上一种快点)
declare @page int = 1; --页码
declare @pageSize int = 5; --每页数 SELECT * FROM
(SELECT * ,ROW_NUMBER() OVER (ORDER BY Id) AS RowNum FROM Campaign) as T1
WHERE RowNum BETWEEN (@page-1)*@pageSize and @page*@pageSize
3)offset fetch next(速度比上面的快,但sql2012以上才可以用)
declare @page int = 2; --页码
declare @pageSize int = 3; --每页数 SELECT * FROM Campaign
order by Id
OFFSET (@page-1)*@pageSize ROWS FETCH NEXT @pageSize ROWS ONLY
No.3 复制表中数据
Insert into table(field1,field2,...) values(value1,value2,...)这种插入经常用到。
但我们也经常有一种情况,将一个表数据的部分字段复制到另一个表中。
两种方式,有所区别:
1)INSERT INTO SELECT语句
(要求目标表Table2必须存在)
INSERT INTO Table2(a,c,d) SELECT a,c,5 from Table1
2)SELECT INTO FROM语句
(要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中)
SELECT a,c into Table2 from Table1
No.4 存在就更新,不存在就插入
用 exists 作为 if 判断条件,判断是否查询出东西 ①有东西则存在,就进行更新 ②没有的话就进行插入操作
IF EXISTS(SELECT * FROM table WHERE Id=@Id )
BEGIN
UPDATE XXX
END
ELSE
BEGIN
INSERT XXX
END
最新文章
- [PostgreSQL] 图解安装 PostgreSQL
- Return Largest Numbers in Arrays
- 彻底搞懂Html5本地存储技术(一)
- javascript 中break、 continue、函数不能重载
- 50.ISE布局布线错误
- Mellanox OFED2.1-X安装记录
- 【NOIP 2012 疫情控制】***
- android108 内存分配
- PHP 异常处理
- iOS弹出底部视图简单实现
- elasticsearch中国字(mmseg)——手动添加字典
- 解决EditText不能撑满全屏的问题及EditText你应该知道的属性
- gulp 小坑一个
- 第一次作业:来自一个奋斗的IT学子
- Excel init
- Python中logging日志模块的使用
- Cannot uninstall &#39;html5lib&#39;. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
- Hadoop集群最迅速的配置免密码登陆方法
- 学生成绩管理系统3.0(JSP+Servlet+MySQL)
- 软件常用设置(VC, eclipse ,nodejs)---自己备用
热门文章
- Linux程序设计:目录维护
- Android 音视频开发入门指南
- 网站架构:PHP针对并发访问如何优化?
- 「工具」三分钟了解一款在线流程绘制工具:Whimsical
- python基础知识梳理-----4基本数据类型,list ,tuple 操作 ,增删该查,以及其他功能函数
- webpack+vue中安装使用vue-layer弹窗插件
- IDEA External libraries 不显示Maven中引入的repository
- windows安装tesseract-OCR及使用
- h5 html5 模拟时钟 页面
- Mono for android彻底退出程序