鉴于我经常性忘记一些知识点,于此记录一下!2018-09-24中秋节码代码篇~
主要内容:
- 复制表(复制表数据,复制表结构)
- 数据快速去重
- 对于大数据级别的表作查找删除时的技巧
- 在插入数据时遇到的bug(SQL:1265;;1166 ....)
-
将excel文件内容导入mysql中,出现invalid utf8 character string错误的解决
-
heidisql导出csv文件时,存在隐藏的双引号,可通过复制到notepad中,再查找替换"即可(快捷键:ctrl+h)
-
多表纵向连接union
1.表的复制
(1)复制表数据:(后需手动添加主键、外键等)
create table nsfc2 select * from new_nsfc2;
(2)只复制表结构:
CREATE TABLE 新表 LIKE 旧表
2.数据快速去重
(1)分组查询重复数>1且id号最小的数据
select min(aid) id,code from nsfc2 group by code having count(*)>1;
(2)将上述查询结果命名为临时表tt
(3)将原表和tt根据code相等连接,再根据原aid>id进行数据行选择;并对这些行执行删除操作
delete nsfc2
from nsfc2,(select min(aid) id,code,name,tranceNo
from nsfc2 group by code having count(*)>1) tt
where nsfc2.code=tt.code and nsfc2.aid>tt.id;
3.对于大数据级别的表作查找删除时的技巧
若原表、查找表数据集都很大,可使用limit限制每次查询的数量(limit m,n指查询第(m+1~m+n)条)(Mysql没有top方法)
delete article from article,(select * from tt limit 0,100) aa where article.pid=aa.code;
4.在插入数据时遇到的bug(SQL:1265;;1166 ....)
(1)1265错误原因:新插入的数据超过字段设置的容量大小
(2)1166错误原因:字段名存在空格
5.将excel文件内容导入mysql中,出现invalid utf8 character string错误的解决
只需在插入时将编码设置为gbk或其他(自己尝试,不乱码就行)即可解决!
6.把四个表连接,然后根据Id统计某一列的总和
select sum(c2) from (
SELECT c1,c2 FROM test1
UNION all
SELECT l1,l2 FROM test2
union all
select m1,m2 from test3
union all
select n1,n2 from test4
) as k
where c1=3
那就这样吧~