SqlServer常用语句
首先,写这个的原因是我其实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
SqlServer常用语句的更多相关文章
- SqlServer常用语句整理
先记录下来 以后整理 1.常用语句 1.1update连表更新 update a set a.YCaseNo = a.WordName + '['+ convert(varchar,a.CaseYea ...
- SqlServer常用语句参考
1.SQL SERVER中如何使用SQL 语句复制表结构: select * into 新表 from 旧表 where 1=2 把“旧表”的表结构复制到“新表”,1=2不复制数据,如果要复制数据,就 ...
- sqlserver 常用语句
1.查询表中的RID RID=RowID=(fileID:pageID:slotID) SELECT sys.fn_PhysLocFormatter(%%physloc%%) AS rid,* FRO ...
- C#学习笔记(4)——sqlserver常用语句
说明(2017-5-26 17:29:05): 需要天天练习: 新建表:create table [表名]([自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,[字段1] ...
- SqlServer 常用语句方法
批量生成删表语句 select 'drop table '+b.name+'.'+a.name+';' from sys.tables a left join sys.schemas b on a.s ...
- MySQL 常用语句大全
MySQL 常用语句大全 一.连接 MySQL 格式: mysql -h 主机地址 -u 用户名 -p 用户密码 1.例 1:连接到本机上的 MYSQL. 首先在打开 DOS 窗口,然后进入目录 my ...
- SQLServer查询语句收集
常用的SQLServer查询语句,有空可以多练习一下,增加记忆,可以提高工作效率! 1.数据操作 Select --从数据库表中检索数据行和列Insert --向数据库表添加新数据 ...
- SQLServer查询语句收集(非常实用)
============================= SQLServer语句收集1 =========================== 1.数据操作 Select --从 ...
- SQL server 常用语句
SQL Server中常用的SQL语句 1.概述 2.查询概述 3.单表查询 4.连接查询 5.带有exists的相关子查询 6.SQL的集合操作 7.插入操作 8.删除操作 9.修改操作 10. ...
随机推荐
- 【OCP认证12c题库】CUUG 071题库考试原题及答案(28)
28.choose the best answer Evaluate the following SQL statement: SQL> SELECT promo_id, promo_categ ...
- 洛谷P3964 [TJOI2013]松鼠聚会(坐标系变换)
题面 传送门 题解 对于两个点\((x_i,y_i)\)和\(x_j,y_j\),我们定义它们之间的曼哈顿距离为 \[|x_i-x_j|+|y_i-y_j|\] 定义它们的切比雪夫距离为 \[\max ...
- Using RDP to connect Windows remote desktop with Linux
安装rdesktop(一般情况下不需要这么做): sudo apt-get install rdesktop 执行连接: rdesktop xxx.xxx.xxx.xxx:3389 -u admini ...
- Nodejs Express模块server.address().address为::
来自 http://blog.csdn.net/medivhq/article/details/74171939 我按照菜鸟教程上的写法为:(http://www.runoob.com/nodejs/ ...
- MySQL中LOCATE用法
SELECT LOCATE('q', 'asqdfasdfser') 返回 3 SELECT LOCATE('q', 'asqdfasqdfser',4) 返回 8 SELECT * from my ...
- [性能分析]linux文件描述符
1.什么是文件和文件描述符 Linux中文件可以分为4种:普通文件.目录文件.链接文件和设备文件.1.普通文件是用户日常使用最多的文件,包括文本文件.shell脚本.二进制的可执行和各种类型的数据.l ...
- asp.net core实时库:SignalR(1)
SignalR的基本概念 前言 最近在自己的项目中实践了SignalR的使用,asp.net core 2.1版本的时候建立了对SignalR的支持,SignalR的可使用Web Socket, Se ...
- Java中静态变量的声明位置
Java中静态变量只能是成员变量,局部方法中的局部变量除final外不能有任何其他修饰符,例如: public class Test { static String x = "1" ...
- 洛谷 P2473 [SCOI2008]奖励关(状压dp+期望)
题面 luogu 题解 \(n \leq 15\) 状压 \(f[i][S]\)表示第\(i\)轮,吃过的集合为\(S\) 正着转移好像有点复杂 考虑逆推转移(正着转移应该也行) \(f[i][S]\ ...
- numpy.argmax()
numpy.argmax(a, axis=None, out=None) 返回沿轴axis最大值的索引 Parameters: a : array_like ...