首先,写这个的原因是我其实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常用语句的更多相关文章

  1. SqlServer常用语句整理

    先记录下来 以后整理 1.常用语句 1.1update连表更新 update a set a.YCaseNo = a.WordName + '['+ convert(varchar,a.CaseYea ...

  2. SqlServer常用语句参考

    1.SQL SERVER中如何使用SQL 语句复制表结构: select * into 新表 from 旧表 where 1=2 把“旧表”的表结构复制到“新表”,1=2不复制数据,如果要复制数据,就 ...

  3. sqlserver 常用语句

    1.查询表中的RID RID=RowID=(fileID:pageID:slotID) SELECT sys.fn_PhysLocFormatter(%%physloc%%) AS rid,* FRO ...

  4. C#学习笔记(4)——sqlserver常用语句

    说明(2017-5-26 17:29:05): 需要天天练习: 新建表:create table [表名]([自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,[字段1] ...

  5. SqlServer 常用语句方法

    批量生成删表语句 select 'drop table '+b.name+'.'+a.name+';' from sys.tables a left join sys.schemas b on a.s ...

  6. MySQL 常用语句大全

    MySQL 常用语句大全 一.连接 MySQL 格式: mysql -h 主机地址 -u 用户名 -p 用户密码 1.例 1:连接到本机上的 MYSQL. 首先在打开 DOS 窗口,然后进入目录 my ...

  7. SQLServer查询语句收集

    常用的SQLServer查询语句,有空可以多练习一下,增加记忆,可以提高工作效率! 1.数据操作 Select      --从数据库表中检索数据行和列Insert      --向数据库表添加新数据 ...

  8. SQLServer查询语句收集(非常实用)

    =============================    SQLServer语句收集1  =========================== 1.数据操作  Select      --从 ...

  9. SQL server 常用语句

    SQL Server中常用的SQL语句   1.概述 2.查询概述 3.单表查询 4.连接查询 5.带有exists的相关子查询 6.SQL的集合操作 7.插入操作 8.删除操作 9.修改操作 10. ...

随机推荐

  1. 【OCP题库】最新CUUG OCP 12c 071考试题库(65题)

    65.(22-16) choose the best answer: The CUSTOMERS table has the following structure: You need to writ ...

  2. oracle根据四位年周取当周周一的日期函数

    create or replace function FUNC_GET_DATE_BY_WEEK( theYearWeek IN VARCHAR2)return date is normalDate ...

  3. telnet 工具

    关于 telnet 命令 telnet命令通常用来远程登录.telnet程序是基于TELNET协议的远程登录客户端程序.Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标 ...

  4. Qt5学习笔记(消息基础)

    #include "MyWidget.h" #include <QApplication> #include <QEvent> #include <Q ...

  5. PHP中count()和sizeof()

    php中获取数组长度函数有两个count()和sizeof(),如果传递给这个函数的数组是一个空数组,或者是一个没有经过设定的变量,返回的数组元素个数就是0.两函数功能一样,手册上讲,sizeof() ...

  6. Performs the analysis process on a text and return the tokens breakdown of the text

    Analyzeedit Performs the analysis process on a text and return the tokens breakdown of the text. Can ...

  7. SVN版本库备份和恢复

    1.版本库备份 1.1.svnadmin dump方式备份 此方法借助的是Subversion官网推荐的svnadmin dump备份方式,它的优点是比较灵活,既可以进行全量备份又可以进行增量备份,并 ...

  8. java的MethodHandle类详解

    一.总述   java7为间接调用方法提供了MethodHandle类,即方法句柄.可以将其看作是反射的另一种方式. 这是使用MethodHandle调用方法的一个例子: public class T ...

  9. 杨辉三角-python

    # -*- coding: utf-8 -*- def triangles(): yield [1] # n = 0 第一行 yield [1, 1] # n = 1 第二行 b, n, old = ...

  10. Go语言类型转换

    类型转换用于将一种数据类型的变量转换为另外一种类型的变量. Go语言类型转换基本格式如下:表达式 T(v) 将值 v 转换为类型 T . Go语言各种类型转换及函数的高级用法:strconv包实现了基 ...