转自:https://blog.csdn.net/kk185800961/article/details/42535223

之前在2本书看到过with as 子句的一个简单例子,网上没找到相关资料。

今天想起总结一下,主要说明如下:

【大表分批更新】

【大表分批删除】

【完全重复的行只保留一行】

  1. --创建测试表
  2. --  DROP TABLE [tabName]
  3. SELECT * INTO [tabName] FROM sys.objects
  4. SELECT * FROM [databaseName].[dbo].[tabName] ORDER BY name desc

    1. ---------------------------------------------------------------
    2. ---------------------------------------------------------------
    3. 【大表分批更新】
    4. 网页需要升级的时候,数据库需要增加字段或者更新字段值,对于大表将堵塞很久。
    5. 一般先增加字段允许为null值,再更新表中默认值,再添加约束
    6. 比如要将测试表的principal_id更新为0,以下用最简单的可行的方法更新:
    7. ;WITH TAB AS(
    8. SELECT TOP 10 principal_id FROM [dbo].[tabName] where principal_id is null
    9. )update TAB set principal_id = 0
    10. 要更新字段principal_id就只取一个。每次选择前10行更新null为0,可以创建定时作业更新。
    11. ---------------------------------------------------------------
    12. ---------------------------------------------------------------
    13. 【大表分批删除】
    14. 对于一些数据维护需要删除较多的数据,而表较大并且很多用户还在使用中。
    15. 一般创建一个作业在晚上执行删除,或者按某个字段分段删除。
    16. 更方便的方法也可以选择符合的条件删除前N行
    17. ;WITH TAB AS(
    18. SELECT TOP 10 principal_id FROM [dbo].[tabName] where principal_id is null
    19. )DELETE FROM TAB
    20. ---------------------------------------------------------------
    21. ---------------------------------------------------------------
    22. 【完全重复的行只保留一行】
    23. --插入使产生重复行
    24. INSERT INTO [tabName]
    25. SELECT TOP 50 PERCENT * FROM [databaseName].[dbo].[tabName]
    26. SELECT * FROM [databaseName].[dbo].[tabName] ORDER BY name desc
    27. 网上使用最多的案例,都指定某列肯定是唯一的,以此来用一个语句删除其他重复的。
    28. 对于完全相同的行,大都表示创建一个临时表来过渡操作。
    29. 以下使用“with 子句 和 ROW_NUMBER()函数”来实现删除完全重复的其他行
    30. ,partition分组时可以选择一列(或所有列)进行分组排序
    31. ;WITH TAB AS(
    32. SELECT ROW_NUMBER()over(partition by object_id order by (select 0)) id
    33. FROM [dbo].[tabName]
    34. )DELETE FROM TAB WHERE ID>1

最新文章

  1. iOS 字符串删除 DOM
  2. HTML5属性--(capture="camera") 上传照片或者打开手机相机
  3. Boost学习笔记(六) progress_display注意事项
  4. JPEG文件格式介绍
  5. [Effective JavaScript 笔记]第40条:避免继承标准类
  6. svn提交代码的原则
  7. LINQ学习之旅(六)
  8. sql字符串查找大小写敏感相关
  9. 虚拟机Linux系统中安装SYNOPSYS工具图解教程
  10. sql相关操作
  11. python/数据库操作补充—模板—Session
  12. 注册MongoDB为系统服务(二)
  13. 10 种保护 Spring Boot 应用的绝佳方法
  14. Collections斗地主案例
  15. 059 SparkStream介绍
  16. 在datasnap 中使用unidac 访问数据(服务器端)
  17. LeetCode 22 Generate Parentheses(找到所有匹配的括号组合)
  18. 使用PHP生成和获取XML格式数据
  19. JS 获取各个偶数之和!!
  20. 【转发】Linux中设置服务自启动的三种方式

热门文章

  1. Webpack vs Gulp(转载)
  2. zookeeper 系列文章
  3. mybatis由浅入深day01_4入门程序_4.6根据用户id(主键)查询用户信息
  4. swift - UISegmentedControl 和 UIWebView 的用法
  5. isdigit()
  6. 浅谈 SSD,eMMC,UFS(转自知乎)
  7. express——crud
  8. 当div没有设置宽度,使用width的fit-content和margin:auto实现元素的水平居中
  9. Windows下Mysql主从配置(Mysql5.5)
  10. Servlet MVC 项目实战实例