T-SQL查询:CTE - with as 子句的特殊应用
2015-01-08 22:44
239 查看
之前在2本书看到过with as 子句的一个简单例子,网上没找到相关资料。
今天想起总结一下,主要说明如下:
【大表分批更新】
【大表分批删除】
【完全重复的行只保留一行】
今天想起总结一下,主要说明如下:
【大表分批更新】
【大表分批删除】
【完全重复的行只保留一行】
--创建测试表 -- DROP TABLE [tabName] SELECT * INTO [tabName] FROM sys.objects SELECT * FROM [databaseName].[dbo].[tabName] ORDER BY name desc
--------------------------------------------------------------- --------------------------------------------------------------- 【大表分批更新】 网页需要升级的时候,数据库需要增加字段或者更新字段值,对于大表将堵塞很久。 一般先增加字段允许为null值,再更新表中默认值,再添加约束 比如要将测试表的principal_id更新为0,以下用最简单的可行的方法更新: ;WITH TAB AS( SELECT TOP 10 principal_id FROM [dbo].[tabName] where principal_id is null )update TAB set principal_id = 0 要更新字段principal_id就只取一个。每次选择前10行更新null为0,可以创建定时作业更新。 --------------------------------------------------------------- --------------------------------------------------------------- 【大表分批删除】 对于一些数据维护需要删除较多的数据,而表较大并且很多用户还在使用中。 一般创建一个作业在晚上执行删除,或者按某个字段分段删除。 更方便的方法也可以选择符合的条件删除前N行 ;WITH TAB AS( SELECT TOP 10 principal_id FROM [dbo].[tabName] where principal_id is null )DELETE FROM TAB --------------------------------------------------------------- --------------------------------------------------------------- 【完全重复的行只保留一行】 --插入使产生重复行 INSERT INTO [tabName] SELECT TOP 50 PERCENT * FROM [databaseName].[dbo].[tabName] SELECT * FROM [databaseName].[dbo].[tabName] ORDER BY name desc 网上使用最多的案例,都指定某列肯定是唯一的,以此来用一个语句删除其他重复的。 对于完全相同的行,大都表示创建一个临时表来过渡操作。 以下使用“with 子句 和 ROW_NUMBER()函数”来实现删除完全重复的其他行 ,partition分组时可以选择一列(或所有列)进行分组排序 ;WITH TAB AS( SELECT ROW_NUMBER()over(partition by object_id order by (select 0)) id FROM [dbo].[tabName] )DELETE FROM TAB WHERE ID>1 --------------------------------------------------------------- ---------------------------------------------------------------
相关文章推荐
- Sql中查询的具体应用及子句的优先级
- CTE和WITH AS短语结合使用提高SQL查询性能
- 数据库概论(实验四2) SQL查询(排序、集函数和分组子句的应用)
- sql中with的用法(CTE公用表表达式):应用子查询嵌套,提高sql性能
- 实验三(2) SQL查询(排序、集函数和分组子句的应用)
- sql中with的用法(CTE公用表表达式):应用子查询嵌套,提高sql性能
- SQL2000系统表、存储过程、函数的功能介绍及应用2009年01月21日 星期三 11:38虽然使用系统存储过程、系统函数与信息架构视图已经可以为我们提供了相当丰富的元数据信息,但是对于某些特殊的元数据信息,我们仍然需要直接对系统表进行查询。因为SQL
- 实验五 SQL查询(排序、集函数和分组子句的应用)
- CTE和WITH AS短语结合使用提高SQL查询性能
- SQLServer2005 XML在T-SQL查询中的典型应用
- SQL 查询语句中交叉条件的应用!
- SQL查询题解的典型应用
- SQLServer2005 XML在T-SQL查询中的典型应用
- 构造使用IN子句的动态Transact-SQL方法进行编号查询
- 构造使用IN子句的动态Transact-SQL方法进行编号查询
- SQLServer2005 XML在T-SQL查询中的典型应用
- sql联合查询|sql交叉查询|除非同时指定了 TOP否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。
- Microsoft OLE DB Provider for SQL Server 错误 '80040e14' 全文操作运行失败。查询子句只包含被忽略的词。
- .Net+SQL Server企业应用性能优化笔记3——SQL查询语句
- 应用sql查询excel