数据订正:insert select,删除重复数据,truncate
来源:互联网 发布:拳击 书 知乎 编辑:程序博客网 时间:2024/05/18 00:31
1、insert select
在这次项目中新添了公司表,这个表初始数据得从员工表中获取。但是在insert select时有个问题,公司表中存在员工表里没有的字段,同时这个字段不能为空。
在这里发现了insert select的新用法,如下:
insert into md_corp_info m (corp_info_id,corp_name,corp_status ,creator,gmt_create,modifier,gmt_modified)
select t.corp_id,t.corp_name,0 ,t.user_id,t.gmt_create,t.modifier,sysdate
from md_udb_info t where t.is_admin='y'
md_udb_info中并没有corp_status字段,所以在select的时候可以设置一个默认值
2、删除重复数据
在员工表里面存在一些重复的公司id,且公司名又不同。select出来再插入公司表会出现corp_id冲突。所以得把员工表进行优化,删除重复数据(这是开发库,数据比较混乱)
在这里使用count与rowid结合实现
delete from md_udb_info
where
/*获取在多个记录中存在的的corp_id*/
corp_id in (select corp_id from md_udb_info group by corp_id having count(corp_id) > 1 )
/*去除行号最小的一个*/
and rowid not in (select min(rowid) from md_udb_info group by corp_id having count(corp_id)>1)
3、删除表
由于与DB交流有误,后来在公司表中新添了一个字段。开发库中的数据得全部删除再重新导入
删除一个表的所有数据(PS:是表中数据,而不是表),可以使用truncate
truncate table 表名
truncate作用与不带where的delete语句相同,但是它的速度更快而且占资源少
PS: 但是要特别注意的是,delete是dml(数据操纵语言),操作会被放到rollback segement中,有trigger的话也会被触发,而truncate是ddl(数据定义语言),立即执行,不能回滚,也不会触发trigger。所以没有备份的话用truncate要特别小心
- 数据订正:insert select,删除重复数据,truncate
- sql数据订正学习
- MYSQL INSERT INTO SELECT 不插入重复数据
- MYSQL INSERT INTO SELECT 不插入重复数据
- insert--select添加数据
- 插入数据 insert into / select
- 利用select直接insert数据
- mysql insert出现重复数据
- [乐意黎转载]MYSQL INSERT INTO SELECT 不插入重复数据
- oracle删除重复数据
- sql删除重复数据
- sql 删除重复数据
- 删除重复数据
- 删除重复的数据
- 删除重复数据 方法
- 数组-删除重复数据
- mysql 删除重复数据
- 删除重复数据
- 凌晨4点的哈佛大学图书馆(自励篇)
- 求两个单向链表的交点
- OpenGL ES纹理
- C++笔试题笔记
- 项目撰写规范
- 数据订正:insert select,删除重复数据,truncate
- web实验报告——会话跟踪使用程序
- web实验报告——会话跟踪使用程序
- 项目撰写规范
- Double转字符串,不使用任何系统函数【完整篇】
- js 的Type属性和Language属性
- C# 中的委托和事件
- web实验报告——数据库连接与应用(SQL Server)
- 一个关于jar包的低级错误