-
执行一条sql语句update多条记录实现思路
通常情况下,我们会使用以下SQL语句来更新字段值:复制代码代码如下:UPDATEmytableSETmyfield='value'WHEREother_field='other_value';但是,如果你想更新多行数据,并且每行记录的各字段值都是各不一样,你会怎么办呢?举个例子,我的博客有三个分类目录(免费资源、教程指南、橱窗展示),这些分类目录的信息存储在数据库表categories中,并且设置了显示顺序字段display_order,每个分类占一行记录。如果我想重新编排这些分类目录的顺序,例如改成(教程指南、橱窗展示、免费资源),这时就需要更新categories表相应行的display_order字段,这就涉及到更新多行记录的问题了,刚开始你可能会想到使用循环执行多条UPDATE语句的方式,就像以下的php程序示例:复制代码代码如下:foreach($display_orderas$id=>$ordinal){$sql="UPDATEcategoriesSETdisplay_order=$ordinalWHEREid=$id";mysql_query($sql);}这种方法...
数据库操作教程 2022-09-23 17:26:24 -
sqlserver的updatefrom语句的深究
一般来说update一个表,使用where语句即可:复制代码代码如下:UPDATETtestSET statusInd='ACTIVE' WHERE id=123注意:update语句后面的table名称,是不可以启用别名的。那么此时的id字段,就是来自Ttest表的(无可厚非)但是,如果update,还有额外的jointable条件约束,语句如下:复制代码代码如下:UPDATETtestSET statusInd='ACTIVE'FROM TparentparentWHERE Ttest.id=123ANDTtest.parentId=parent.idANDparent.statusInd='ACTIVE'注意:update后面的Ttest不能使用别名那么定位到,要修改的Ttest记录,就必须这样写:Ttest.id=123如果直接写id=123,会分不清是Ttest表还是Tparent表的 i...
数据库操作教程 2022-09-23 17:26:09 -
总结下sqlservergroupby的用法
今天用实例总结一下groupby的用法。归纳一下:groupby:ALL,Cube,RollUP,Compute,Computeby创建数据脚本CreateTableSalesInfo(Ctiynvarchar(50),OrderDatedatetime,OrderIDint)insertintoSalesInfoselectN'北京','2014-06-09',1001unionallselectN'北京','2014-08-09',1002unionallselectN'北京','2013-10-09',1009unionallselectN'大连','2013-08-09',4001unionallselectN'大连','2013-10-09',4002unionallselectN'大连','2013-05-12',4003unionallselectN'大连','2014-11-11',4004unionallselectN'大连','2014-12-11',4005首先执行以下脚本:selectCtiy,count(OrderID)asOrderCountfromSale...
数据库操作教程 2022-09-23 17:24:35 -
Sql学习第四天——SQL关于withcube,withrollup和grouping解释及演示
关于withcube,withrollup和grouping通过查看sql2005的帮助文档找到了CUBE和ROLLUP之间的具体区别:CUBE生成的结果集显示了所选列中值的所有组合的聚合。ROLLUP生成的结果集显示了所选列中值的某一层次结构的聚合...
数据库操作教程 2022-09-23 17:15:35 -
Replace关键字的妙用查询是否包含某个特定字符串
在sqlserver中Replace关键字主要是用来将字符串中的某个字符替换成别的字符,今天要逆向思维,它还可以用来查询是否包含某个特定字符串,例如给定下面数据集 期望从这个数据集中获取包含“aaa”字符的记录,注意第2条数据不是包含“aaa”,而是包含“aaaa”。期望的”“结果如下: 传统的思维肯定是想如何查出包含有3个a的字符串,有的人会像用like,但这样会连同4个a也查出来...
数据库操作教程 2022-09-23 17:15:12 -
PL/SQLDEVELOPER使用的一些技巧
1,登录后默认自动选中MyObjects默认情况下,PLSQLDeveloper登录后,Brower里会选择Allobjects,如果你登录的用户是dba,要展开tables目录,正常情况都需要Wait几秒钟,而选择MyObjects后响应速率则是以毫秒计算的。Tools菜单-->ObjectBrowerFilters,会打开BrowerFolders的定单窗口,把“MyObjects”设为默认即可...
数据库操作教程 2022-09-23 17:13:11 -
sqlserver中delete、update中使用表别名和oracle的区别
昨天发现程序中数据分析的结果不对,重新进行分析后,原数据仍在,有值的字段被累计。心说,不对啊,是重新生成记录后才分析的啊...
数据库操作教程 2022-09-23 17:07:06 -
存储过程配合UpdateDaset方法批量插入Dataset数据实现代码
复制代码代码如下:publicboolSaveSMSMessage(SMSBatchsmsBatch,DataSetsmsMessages){//using(TransactionScopets=newTransactionScope(TransactionScopeOption.Suppress))//{foreach(DataRowrowinsmsMessages...
数据库操作教程 2022-09-23 17:06:08 -
SQL里面用自定义Split()完成个性化需求
复制代码代码如下:SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATEfunction[dbo].[SplitString](@Inputnvarchar(max),@Separatornvarchar(max)=',',@RemoveEmptyEntriesbit=1)returns@TABLEtable([Id]intidentity(1,1),[Value]nvarchar(max))asbegindeclare@Indexint,@Entrynvarchar(max)set@Index=charindex(@Separator,@Input)while(@Index>0)beginset@Entry=ltrim(rtrim(substring(@Input,1,@Index-1)))if(@RemoveEmptyEntries=0)or(@RemoveEmptyEntries=1and@Entry<>'')begininsertinto@TABLE([Value])Values(@Entry)endset@Input=...
数据库操作教程 2022-09-23 17:06:07 -
SqlServer分组统计并合计总数及WITHROLLUP应用
WITHROLLUP在生成包含小计和合计的报表时,ROLLUP运算符很有用。ROLLUP运算符生成的结果集类似于CUBE运算符所生成的结果集...
数据库操作教程 2022-09-23 17:05:04 -
SQLServer误区30日谈第27天使用BACKUPWITHCHECKSUM可以替代DBCCCheckDB
误区#27:使用BACKUP...WITHCHECKSUM可以替代DBCCCheckDB错误 乍一看,由于BACKUPWITHCHECKSUM会检测所有分配出去的页的校验和的值,这个误区貌似是这么回事,但实际上并不是这么回事,原因如下: 由SQLServer2000或是更早版本升上来的数据库pagechecksums必须开启,在开启后,并不是数据库中所有的页都会被叫上页校验和,当页损坏发生时,IO系统可不会区分损坏的页是有页校验和还是没有校验和的。所以使用BACKUP...WITHCHECKSUM就有可能导致一些损坏页不被发现,造成的后果…… 除此之外,还有一个问题是完整备份的时间间隔相对比较长,假如说一个月,而相对于DBCCCheckDB的最佳实践是一个礼拜,这导致WITHCHECKSUM不能替代CHECKDB...
数据库操作教程 2022-09-23 17:03:22 -
sqlserver中ntext字段的批量替换(updatetext的用法)
一、问题描述:1。在SqlServer中,ntext/text/image字段不允许应用replace函数替换内容;2...
数据库操作教程 2022-09-23 16:57:15