-
分享SQLServer删除重复行的6个方法
1.如果有ID字段,就是具有唯一性的字段复制代码代码如下:delecttablewhereidnotin(selectmax(id)fromtablegroupbycol1,col2,col3...)groupby子句后跟的字段就是你用来判断重复的条件,如只有col1,那么只要col1字段内容相同即表示记录相同。2.如果是判断所有字段也可以这样复制代码代码如下:select*into#aafromtablegroupbyid1,id2,....deletetableinsertintotableselect*from#aa3.没有ID的情况复制代码代码如下:selectidentity(int,1,1)asid,*into#tempfromtabeldelect#whereidnotin(selectmax(id)from#groupbycol1,col2,col3...)delecttableinsetintotable(...)select.....from#temp4.col1+','+col2+','...col5联合主键复制代码代码如下:select*fromtablewhe...
数据库操作教程 2022-09-23 20:41:46 -
sqlserver关于分页存储过程的优化【让数据库按我们的意思执行查询计划】
复制代码代码如下:--代码一DECLARE@ccINTSELECTNewsId,ROW_NUMBER()OVER(ORDERBYSortNumDESC)ASRowIndexINTO#tbFROMnewsWITH(NOLOCK)WHERENewsTypeId=@NewsTypeIdANDIsShow=1SET@cc=@@ROWCOUNTSELECTn.*FROMnewsASnWITH(NOLOCK),#tbAstWHEREt.RowIndex>@PageIndex*@PageSizeANDt.RowIndex<=(@PageIndex+1)*@PageSizeANDt.newsid=n.newsidSELECT@ccDROPTABLE#tb复制代码代码如下:--代码二DECLARE@ccINTSELECTNewsId,ROW_NUMBER()OVER(ORDERBYSortNumDESC)ASRowIndexINTO#tbFROMnewsWITH(NOLOCK)WHERENewsTypeId=@NewsTypeIdANDIsShow=1SET@cc=@@ROWCOUNTSEL...
数据库操作教程 2022-09-23 20:41:40 -
sqlserver中通过osql/ocmd批处理批量执行sql文件的方法
利用osql/ocmd批处理批量执行sql文件注意:在上图中我们可以看到osql并不支持SQLServer2008的所有功能,如果需要使用SQLServer2008的所有功能可以使用ocmd命令。有了osql/ocmd命令要批量执行sql文件当然需要写一个批处理命令,例如我们执行上面sql文件就可以在txt中编写下面的语句:复制代码代码如下:osql-S"127.0.0.1"-U"sa"-P"sa"-d"Northwind"-i"%CD%/1.sql"osql-S"127.0.0.1"-U"sa"-P"sa"-d"Northwind"-i"%CD%/2.sql"然后保存成sql.bat同上面的1.sql和2.sql放到同一个文件下,在执行时双击sql.bat就可以了...
数据库操作教程 2022-09-23 20:41:36 -
在SQL查询中使用LIKE来代替IN查询的方法
如下:复制代码代码如下:SELECT*FROMOrdersWHEREOrderGUIDIN('BC71D821-9E25-47DA-BF5E-009822A3FC1D','F2212304-51D4-42C9-AD35-5586A822258E')可以看出直接在IN后面跟ID的集合需要将每一个ID都用单引号引起来。在实际应用中会遇到这么一种情况,在界面中收集的是一串GUID的拼接字符串,中间以逗号隔开,如果作为参数传到一个存储过程中执行,最终生成的语句会是下面这样:复制代码代码如下:SELECT*FROMOrdersWHEREOrderGUIDIN('BC71D821-9E25-47DA-BF5E-009822A3FC1D,F2212304-51D4-42C9-AD35-5586A822258E')这样就不能查询到正确的结果...
数据库操作教程 2022-09-23 20:41:31 -
去掉前面的0的sql语句(前导零,零前缀)
原来sql还有个stuff的函数,很强悍。一个列的格式是单引号后面跟着4位的数字,比如'0003,'0120,'4333,我要转换成3,120,4333这样的格式,就是去掉单引号和前导的0,用以下语句就可以...
数据库操作教程 2022-09-23 20:41:26 -
sqlserver下将数据库记录的列记录转换成行记录的方法
假设有张学生成绩表(tb)如下:NameSubjectResult张三语文 74张三数学 83张三物理 93李四语文 74李四数学 84李四物理 94想变成姓名语文数学物理-------------------------------------------李四748494张三748393SQL语句如下:复制代码代码如下:createtabletb(Namevarchar(10),Subjectvarchar(10),Resultint)insertintotb(Name,Subject,Result)values('张三','语文',74)insertintotb(Name,Subject,Result)values('张三','数学',83)insertintotb(Name,Subject,Result)values('张三','物理',93)insertintotb(Name,Subject,Result)values('李四','语文',74)insertintotb(Name,Subject,Result)values('李四','数学',84)insertin...
数据库操作教程 2022-09-23 20:41:23 -
SQLServer本地时间和UTC时间的相互转换实现代码
复制代码代码如下:DECLARE@LocalDateDATETIME,@UTCDateDATETIME,@LocalDate2DATETIMESET@LocalDate=GETDATE()SET@UTCDate=DATEADD(hour,DATEDIFF(hour,GETDATE(),GETUTCDATE()),@LocalDate)SET@LocalDate2=DATEADD(hour,DATEDIFF(hour,GETUTCDATE(),GETDATE()),@UTCDate)SELECT'1.Now'[Now],@LocalDate[DateTime]UNIONSELECT'2...
数据库操作教程 2022-09-23 20:41:19 -
数据库更新Sqlserver脚本总结
表复制:1.INSERTINTOSELECT语句 语句形式为:InsertintoTable2(field1,field2,...)selectvalue1,value2,...fromTable1 要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。 示例如下:复制代码代码如下:--创建测试表createTABLEUsers1(UserIDintidentity(1,1)primarykeynotnull,UserNamevarchar(10),UserAddressvarchar(20))GOcreateTABLEUsers2(IDintidentity(1,1)primarykeynotnull,Namevarchar(10),Addressvarchar(20))GO--创建测试数据InsertintoUsers1values('赵','asds')InsertintoUsers1values('钱','asds')InsertintoUsers1values('孙','asds')InsertintoUse...
数据库操作教程 2022-09-23 20:41:17 -
SQLServer连接失败错误故障的分析与排除
一般而言,有两种连接sqlserver的方式,一是利用sqlserver自带的客户端工具,如企业管理器、查询分析器、事务探查器等;二是利用用户自己开发的客户端程序,如ASP脚本、VB程序等,客户端程序中又是利用ODBC或者OLEDB等连接sqlserver。下面,我们将就这两种连接方式,具体谈谈如何来解决连接失败的问题...
数据库操作教程 2022-09-23 20:41:11 -
SQLServer触发器及触发器中的事务学习
如果你有对触发器和事务的概念,有些了解,这篇文章,对你来说会是很简单,或能让你更进一步的了解触发器里面的一些故事,和触发器中事务个故事。在这边文章里面,我不会从触发器和事务的概念去讲述,而是从常见的两种触发器类型(DML触发器&DDL触发器)和After触发器& InsteadOf触发器的应用不同,开始说起它们,然后是说与事务有关的故事...
数据库操作教程 2022-09-23 20:41:11 -
sqlserver存储过程中SELECT与SET对变量赋值的区别
SQLServer推荐使用SET而不是SELECT对变量进行赋值。当表达式返回一个值并对一个变量进行赋值时,推荐使用SET方法...
数据库操作教程 2022-09-23 20:41:01 -
SQLServer获得用户最新或前n条订单的几种SQL语句小结
实现以上要求,我们可以用以下几种方式,但是效率却相差很远。首先我们在Order表中,创建一个索引:CREATEUNIQUEINDEXidx_eid_odD_oidDONOrders(EmployeeID,OrderDateDESC,OrderIDDESC) 多个OrderId是为了在OrderData相同的情况下,按订单号倒序,是个辅助属性...
数据库操作教程 2022-09-23 20:41:00