MySQL删除not in语句使用方法 (删除数据库中 not in的使用)


MySQL是一个开源的关系型数据库管理系统,广泛应用于各种应用场景中。在使用MySQL时,我们经常需要删除一些数据,而其中not in语句是一个非常有用的工具,可以帮助我们快速、方便地删除无用的数据。本文将为你详细介绍MySQL删除not in语句的使用方法。

一、not in语句的定义

not in语句是MySQL中的一种条件语句,用于指定SQL查询时返回值中不包含某些值。

语法格式如下:

“` SQL

SELECT column_name(s)

FROM table_name

WHERE column_name NOT IN (value1, value2, …);

“`

其中column_name指需要查询的列,table_name指需要查询的表,NOT IN表示返回不包含括号中指定值的所有行。

二、not in语句的使用场景

not in语句可以应用于各种场景,例如:

1. 待删除的数据不在指定范围内:可以使用not in语句对需要删除的数据进行筛选,只保留在指定范围外的数据。

2. 删除或更新表中的指定行:使用not in语句可以准确地删除或更新表中的指定行。

3. 数据库优化:使用not in语句可以优化数据库查询效率,减少不必要的数据加载和运算量。

以下将分别介绍not in语句在这些场景中的使用方法。

三、删除指定范围外的数据

在进行数据清理时,有时需要删除数据库中不在指定范围内的数据。例如,删除所有不在“用户ID在1到100之间”的用户数据。

使用not in语句可以轻松实现这个目标,具体代码如下:

“` SQL

DELETE FROM users

WHERE user_id NOT IN (1,2,3,4,….100);

“`

其中users是需要删除的表,user_id是需要删除的数据列。通过将需要删除的数据ID列的ID值都列出,并将not in语句用于where条件中,可以实现只删除不在指定范围内的数据的效果。

四、删除指定行

不仅可以删除指定范围外的数据,还可以使用not in语句准确地删除表中某些行。例如,想要删除users表中最近一年没有登录的用户数据。

使用not in语句可以轻松实现这个目标,具体代码如下:

“` SQL

DELETE FROM users

WHERE user_id NOT IN (

SELECT user_id

FROM user_login_history

WHERE login_time > DATE_SUB(NOW(), INTERVAL 1 YEAR)

);

“`

其中users是需要删除的表,user_id是需要删除的数据列,user_login_history是需要用来比较的表。通过将需要用到的表中的字段都放入IN子句中,可以实现只删除满足条件的数据的效果。

五、数据库优化

在进行大型数据库操作时,查询速度可能会变慢。这时,可以使用not in语句对查询速度进行优化。例如,在进行数据清理时,要删除不在指定范围内的大量数据。这种情况下,如果一条一条地删除数据,可能会十分耗时。

使用not in语句可以大幅度提升操作效率。具体代码如下:

“` SQL

DELETE FROM users

WHERE user_id NOT IN (

SELECT user_id

FROM users_temp

);

“`

其中users是需要删除的表,user_id是需要删除的数据列,users_temp是查询需要用到的表。与以上例子类似,通过将需要查询的表中的字段都放入IN子句中,可以实现快速、准确地删除满足条件的数据的效果。

六、

本文为你详细介绍了MySQL删除not in语句的使用方法。在实际操作中,需要根据具体的情况选择不同的场景和方法。在进行数据清理、性能优化等操作时,not in语句是一个非常有用的工具。通过灵活运用not in语句,可以轻松实现满足特定条件的数据删除、更新等操作,从而提高MySQL数据库管理效率,帮助你更好地处理各种数据库问题。

相关问题拓展阅读:

  • SQL语句删除重复的记录
  • 如何删除数据库中A表和B表中的重复数值

SQL语句删除重复的记录

COL1 中有重复记录(COL1,COL2为主键),如何删除

1、有少数重复记录(在col1,col2上有索引比较好)

DELETE T

WHERE (COL1,COL2) IN

(SELECT COL1,COL2 FROM T GROUP BY COL1,COL2 HAVING COUNT(*) > 1)

AND

ROWID NOT IN

(SELECT MIN(ROWID) FROM T GROUP BY COL1,COL2 HAVING COUNT(*) > 1)

2、大部份记录有重复记录

DELETE T WHERE ROWID NOT IN

(SELECT MIN(ROWID) FROM T GROUP BY COL1,COL2)

3、其他写法

DELETE T WHERE ROWID IN

(SELECT A.ROWID FROM T A,T B

WHERE A.COL1=B.COL1 AND A.COL2 = B.COL2 AND A.ROWID > B.ROWID)

######################################

10. 删除重复记录

更高效的删除重复记录方法 ( 因为使用了ROWID)

DELETE FROM EMP E

WHERE E.ROWID > (SELECT MIN(X.ROWID)

FROM EMP X

WHERE X.EMP_NO = E.EMP_NO);

11. 用TRUNCATE替代DELETE

当删除表中的记录时,在通常情况下, 回滚段(rollback segments ) 用来存放可以被恢复的信息. 如果你没有COMMIT事务,ORACLE会将数据恢复到删除之前的状态(准确地说是

恢复到执行删除命令之前的状况)

而当运用TRUNCATE时, 回滚段不再存放任何可被恢复的信息.当命令运行后,数据不能被恢复.因此很少的资源被调用,执行时间也会很短.

(译者按: TRUNCATE只在删除全表适用,TRUNCATE是DDL不是DML)

12. 尽量多使用COMMIT

只要有可能,在程序中尽量多使用COMMIT, 这样程序的性能得到提高,需求也会因为COMMIT所释放的资源而减少:

COMMIT所释放的资源:

a. 回滚段上用于恢复数据的信息.

b. 被程序语句获得的锁

c. redo log buffer 中的空间

d. ORACLE为管理上述3种资源中的内部花费

删除重复的数据

delete from tb where id not in (

select id from

(select fileSize,fileName ,max(id) id from tb group by filesize,filename ) a

)

现在完成了重复数据的删除,主要是利用了找出某个分组中更大的那个id,其中包括了所有不重复的id,然后使用not in将需要保留的排除。

1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断

select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)

2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录

delete from people where peopleName in (select peopleName from people group by peopleName having count(peopleName) > 1) and peopleId not in (select min(peopleId) from people group by peopleName having count(peopleName)>1)

3、查找表中多余的重复记录(多个字段)

select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)

4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录

delete from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录

select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

6.消除一个字段的左边的之一位:

update tableName set =Right(<title>,(len(<title>)-1)) where Title like ‘村%’</p><p><p> 7.消除一个字段的右边的之一位:</p><p> update tableName set <title>=left(<title>,(len(<title>)-1)) where Title like ‘%村’</p><p><p> 8.假删除表中多余的重复记录(多个字段),不包含rowid最小的记录 </p><h3 id="如何删除数据库中A表和B表中的重复数值">如何删除数据库中A表和B表中的重复数值</h3><p>去掉重复值计数的三种方法判猜,函数搏冲悄法、基渣删除重复值法、透视表法,各种方法均有讲解,可以择优使用。</p><p>可以写个过程;</p><p>先找出 A,B表中重复数据的id,然后旅芦核在根据id,分别把A,B表哗庆中相应数据删除 oracle中可以用拆掘游标处理</p><p>关于删除数据库中 not in的使用的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。</p></div></div></div><div class="main-news"><div class="layui-container"><div class="layui-row layui-col-space20"> <div class="layui-col-lg6 content"><div class="news-panel" style="padding-bottom:3px;width:auto"><a href="/news/01154327921138208768.html">优化你的后台数据库架构设计 (后台数据库架构设计)</a></div></div> <div class="layui-col-lg6 content"><div class="news-panel" style="padding-bottom:3px;width:auto"><a href="/news/01154327880646397952.html">ztree数据绑定:如何从数据库中获取数据? (ztree如何从数据库中获取)</a></div></div> <div class="layui-col-lg6 content"><div class="news-panel" style="padding-bottom:3px;width:auto"><a href="/news/01154327839823237120.html">数据库归档日志查询指南 (如何查数据库归档日志)</a></div></div> <div class="layui-col-lg6 content"><div class="news-panel" style="padding-bottom:3px;width:auto"><a href="/news/01154327813973741568.html">Python数据库的定义 轻松学习数据库操作 (python数据库的定义)</a></div></div> <div class="layui-col-lg6 content"><div class="news-panel" style="padding-bottom:3px;width:auto"><a href="/news/01154327776959008768.html">使用.NET MVC进行高效的数据库操作 (.net mvc 数据库操作数据库)</a></div></div> <div class="layui-col-lg6 content"><div class="news-panel" style="padding-bottom:3px;width:auto"><a href="/news/01154327738841174016.html">Delphi实现阿里云数据库连接的技巧 (delphi 阿里云数据库连接)</a></div></div> <div class="layui-col-lg6 content"><div class="news-panel" style="padding-bottom:3px;width:auto"><a href="/news/01154327709594292224.html">数据挖掘专业,哪些院校值得考虑? (数据库培训院校)</a></div></div> <div class="layui-col-lg6 content"><div class="news-panel" style="padding-bottom:3px;width:auto"><a href="/news/01154327650911784960.html">备份恢复指南 (用友数据库文件)</a></div></div> <div class="layui-col-lg6 content"><div class="news-panel" style="padding-bottom:3px;width:auto"><a href="/news/01154327626635153408.html">数据库连接实现:探析登录页面的源码 (登录页面连接数据库源码)</a></div></div> <div class="layui-col-lg6 content"><div class="news-panel" style="padding-bottom:3px;width:auto"><a href="/news/01154327598680117248.html">实战项目:数据库开发技巧 (数据库开发项目实战)</a></div></div> </div></div></div> <div class="footer"><div class="layui-container"><p class="footer-web"> <a href="http://url.qiping.cn/" target="_blank">域名转发系统</a> <a href="https://www.14study.cn/" target="_blank">一起学习网</a> <a href="https://cms.qiping.cn/" target="_blank">站群管理系统</a> <a href="https://fcms.qiping.cn/" target="_blank">消防隐患排查系统</a> <a href="https://www.4x4offroadleds.com" target="_blank">汽车灯</a> </p><div class="layui-row footer-contact"><div class="layui-col-sm2 layui-col-lg1"><img width="90" height="90" src="https://global.cnd.aidufei.com/99999999/template/1323680824255713280.png"></div><div class="layui-col-sm10 layui-col-lg11"><div class="layui-row"><div class="layui-col-sm6 layui-col-md8 layui-col-lg9"><p class="contact-top"><i class="layui-icon layui-icon-cellphone"></i> 13432074335</p><p class="contact-bottom"><i class="layui-icon layui-icon-home"></i> QQ:312425336</p></div><div class="layui-col-sm6 layui-col-md4 layui-col-lg3"><p class="contact-top"><span class="right"><p>版本所有:祺平科技<br/></p></span></p><p class="contact-bottom"><span class="right"> <a href="https://beian.miit.gov.cn" target="_blank">粤ICP备15012827号</a><br> </span></p></div></div></div></div></div></div><script src="https://global.cnd.aidufei.com/cms/lib/layui/layui.js"></script><script>var path="https://global.cnd.aidufei.com/cms/",template="t0_2";layui.config({base:path+"web/"+template+"/js/"}).use("firm")</script> <script>proxyImage(".introTop"),adjustImageSize(".introTop"),$(window).resize(function(){adjustImageSize(".introTop")})</script><script type="text/javascript" src="https://hm.baidu.com/hm.js?2e8f7fcee0f845820f8b9a2e0c1ff589"></script> <script type="text/javascript" src="https://hm.baidu.com/hm.js?977ecf21d4a5885084f33285a2f93de6"></script> <script charset="UTF-8" id="LA_COLLECT" src="//sdk.51.la/js-sdk-pro.min.js"></script> <script>LA.init({id:"3LVaPRY7KWTTXG2v",ck:"3LVaPRY7KWTTXG2v",autoTrack:true,screenRecord:true})</script></body></html>