工作随笔——mysql子查询删除原表数据
2016-07-29 00:00
603 查看
最近在开发的时候遇到一个mysql的子查询删除原表数据的问题。在网上也看了很多方法,基本也是然并卵(不是写的太乱就是效率太慢)。
公司DBA给了一个很好的解决方案,让人耳目一新。
froadbill.bill是账单表(约1kw数据),froadbill.refundinfo是退款表(约10w数据)。这条sql是要删除账单表20150102-20150302并且不在退款表的数据。这种写法避免了在sql中使用in或者not in这种低效的语句。
数据插入也可以使用这种写法:
公司DBA给了一个很好的解决方案,让人耳目一新。
DELETE fb.* FROM froadbill.bill fb LEFT JOIN froadbill.refundinfo br ON br.billSeqNo = fb.seq_no WHERE br.billSeqNo IS NULL AND fb.create_time >='20150102000000' AND fb.create_time <'20150302000000' ;
froadbill.bill是账单表(约1kw数据),froadbill.refundinfo是退款表(约10w数据)。这条sql是要删除账单表20150102-20150302并且不在退款表的数据。这种写法避免了在sql中使用in或者not in这种低效的语句。
数据插入也可以使用这种写法:
INSERT INTO froadbill.bill_history SELECT DISTINCT fb.* FROM froadbill.bill fb LEFT JOIN froadbill.refundinfo br ON br.billSeqNo = fb.seq_no WHERE br.billSeqNo IS NULL AND fb.create_time >='20150102000000' AND fb.create_time <'20150302000000' ;
相关文章推荐
- 忘记了本地mysql密码应该怎么找回
- mysqldump备份还原和mysqldump导入导出语句大全详解
- realmysql 配套书 资料
- MySQL数据库的常用操作
- navicat远程连接mysql,2003 can't connect to mysql server on 10038
- mysql56 在线源码查看
- Mysql数据库基本操作
- MySQL进阶(二)——子查询
- mysqldump中使用flush tables with read lock的风险分析
- MySQL灾难恢复
- MySQL存储过程
- 开源分布式MySQL中间件探究与应用 dba+
- mysqldump原理及实践
- mysql 易错误理解
- MySQL之Replication
- Mysql异常:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException
- Mysql异常:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
- Mysql查询缓存研究
- mysql的函数
- MYSQL 技术内幕 博客学习