1.情景展示

  现在有一张表,需要将表中某字段的值不是以指定字符开头的列进行删除,如何实现?

2.问题分析

  错误方案一:同事想到的是:这种方式

  咱们来看一下,这个表总共有多少条数据

  本来表数据总共才4万多条数据,然而使用上面的查询方式,却查出了1多个亿的数据,真不知道这数据库是怎么想的。

  错误方案二:既然不行,我首先想到的是:使用not like实现,实践结果如下:

  再来看一下,使用like查询有多少条数据。

  总共的数据为:40059+3972=44031条 数据,比总表数44295要少,也就是说:使用not like查询会遗漏数据,具体什么原因想不通。

3.解决方案

  正确方案一:既然not like不行,我就想到用了使用exists()实现。

  先来查查符合条件的,使用exists()查询一下与使用like的语句是否一致。

  结果一致,再看一下,使用not exists()的查询结果

  算一下,与总数是否一致:40323+3972=44295,与结果一致,大功告成!

--查询表中不是以0.1.2.开头的数据(使用exists实现)
SELECT COUNT(1)
FROM BASE_ORG_INFO T
WHERE NOT EXISTS
(SELECT 1
FROM (SELECT ORGID FROM BASE_ORG_INFO WHERE ORGSEQ LIKE '0.1.2.%') S
WHERE S.ORGID = T.ORGID)

  如何删除这些数据?

--删除表中某字段不是以0.1.2.开头的数据(使用IN+EXISTS实现)
DELETE FROM BASE_ORG_INFO T2
WHERE T2.ORGID IN (SELECT T.ORGID
FROM BASE_ORG_INFO T
WHERE NOT EXISTS (SELECT 1
FROM (SELECT ORGID
FROM BASE_ORG_INFO
WHERE ORGSEQ LIKE '0.1.2.%') S
WHERE S.ORGID = T.ORGID))

  执行结果:

  方案二:直接使用not in()就可以搞定的事情,饶了一大圈!!!

DELETE FROM BASE_ORG_INFO T2
WHERE T2.ORGID IN
(SELECT T.ORGID
FROM BASE_ORG_INFO T
WHERE T.ORGID NOT IN
(SELECT ORGID FROM BASE_ORG_INFO WHERE ORGSEQ LIKE '0.1.2.%'))

  执行结果如下:

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

相关推荐:

 

最新文章

  1. bitmap转化base64
  2. 2014 网选 广州赛区 hdu 5023 A Corrupt Mayor's Performance Art
  3. 一些peoplecode小技巧【一】
  4. 第二百零八天 how can I 坚持
  5. WPF中DataGrid的ComboBox的简单绑定方式(绝对简单)
  6. Unity3D用vistual studio打卡C#脚本卡死解决
  7. POJ 1631 Bridging signals(LIS O(nlogn)算法)
  8. ios开发之代理&&协议
  9. C++11中int,float,double与string的转化
  10. android实习程序6——拨号通话
  11. 读书笔记 effective c++ Item 16 成对使用new和delete时要用相同的形式
  12. (cljs/run-at (->JSVM :browser) "语言基础")
  13. JVM学习笔记三:垃圾收集器及内存管理策略
  14. Windows上IOCP Socket事件模型管理
  15. linux 下的clock_gettime() 获取时间函数
  16. udev和devfs的区别
  17. HDU 3172 Virtual Friends (map+并查集)
  18. Oracle11g温习-第十七章:权限管理
  19. 将hibernate框架融入到spring框架中
  20. JS省市区联动

热门文章

  1. springboot打war包汇总
  2. 【linux】linux修改文件句柄数量,linux文件句柄的修改分为用户级和系统级
  3. JTAG接口定义
  4. 01 .NET CORE 2.2 使用OCELOT -- 简单使用
  5. 安全漏洞系列(一)---XSS漏洞解决方案(C# MVC)
  6. Flutter实体与JSON解析的一种方法
  7. Markdown温故知新(1):Markdown面面观
  8. redis的两种持久化方案
  9. new的原理及实现
  10. iOS开发工具:Alcatraz、SVGKit、Lin以及Transformifier等