-
分享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 -
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 -
SQLSERVER服务手工启动批处理文件
不比2000有个开关的程序所以上网找了下教程自己写个批处理自动启动服务哇哈哈突然觉得只要有网络语言不是啥大的障碍写起来都差不多呀哇哈哈话说最近又加了个ORACLE的服务依然偷懒把原先的改改用吧哈哈就成这样了复制代码代码如下:@echooffecho开启SQLSERVER服务按1echo关闭SQLSERVER服务按2echo开启ORACLE服务按3echo关闭ORACLE服务按4set/pans= if%ans%==1gotosts if%ans%==2gotoovsif%ans%==3gotosto if%ans%==4gotoovo:staecho准备开启SQLSERVER服务netstartSQLWriternetstartReportServernetstartMsDtsServernetstartmsftesqlnetstartSQLBrowsernetstartMSSQLSERVEROLAPServicenetstartSQLSERVERAGENTnetstartMSSQL$SQLEXPRESSnetstartMSSQLSERVERgotoexit:ovsecho准备关...
数据库操作教程 2022-09-23 20:40:51