常用SQL整理
2014-01-10 10:33
183 查看
整理了日常用到的一些sqls
1.插入表
2.清空表
3. 导出到文件
4.导入文件到DB
5. 更新表
6. 字段拼接
7.字段截取
8.删除某列
9.去重
10.分组取最大的N条记录
11.分组取最大值
12.拆分分隔符
13 日期转数字
14 MD5,字段不能有null
15 上一个月的数据
16 上一周的数据
17 最近7天的数据
18 字符变日期
19 字段拆分
1.插入表
insert into table_B select * from table_A
2.清空表
truncate table test #清空表,结构还存在 delete table test where ... #删除表中特定的数据 drop table test #删除整表,包括结构
3. 导出到文件
select * from table_Awhere filed1 like '8422%' into outfile '/usr/local/mysql/8422.txt' fields terminated by '||'
4.导入文件到DB
LOAD DATA INFILE "/root/user/output.txt" INTO TABLE table_ACHARACTER SET gbk fields terminated by x'09' IGNORE 1 LINES; #字符集有时添加后会报错,可以去掉
5. 更新表
#一对一的情况 update table_Aa, table_B b set a.field1 = b.field1 where a.field2 = b.field2 #一对多的情况 update table_Aa inner join table_B b on a.route_id = b.valid_route_id set a.valid_route_id=b.valid_route_id
6. 字段拼接
UPDATE table_Aset SIC_DESC=concat_ws('|',SICCODE1,SICCODE2,SICCODE3,SICCODE4)
7.字段截取
create table table_AENGINE=MyISAM select locname,substring(file_name,1,3) from table_B where LOCNAME !=''
8.删除某列
alter table table_Adrop column source_path
9.去重
table_A
+----+--------+ | id | name | +----+--------+ | 1 | google | | 2 | yahoo | | 3 | msn | | 4 | google | | 5 | google | | 6 | yahoo | +----+--------+
#1 通过条件选取最大或最小的记录,来达到去重的目的
select * from table_Aa where id=(select min(id) from table_Awhere name=a.name)
#2 通过group by 和order by
select * from table_Agroup by name order by id desc;
#3 keep the row with the lowest id
(1)DELETE n1 FROM table_An1, table_An2 WHERE n1.id > n2.id AND n1.name = n2.name
(2)DELETEFROM NAMES
WHERE id NOTIN(SELECT*FROM(SELECT MIN(n.id)FROM NAMES n
GROUPBY n.name) x)
#4 keep the row with the highest id
DELETE n1 FROM names n1, names n2 WHERE n1.id < n2.id AND n1.name = n2.name
10.分组取最大的N条记录
#先添加一个rowid select *from sh_20110401_bankup as T where 3>(select count(*) from sh_20110401_bankup where field1=T.field1 and rowid>T.rowid order by T.field1,T.rowid desc )
11.分组取最大值
#通过两步 (1)create table sh_20110301_0331_ptp_t select record_date,substring(time_stamp,1,2)as tim,count(*)as cc from sh_20110301_0331_ptp group by substring(time_stamp,1,2),record_date order by record_date,substring(time_stamp,1,2) (2)select * from sh_20110301_0331_ptp_t where cc in (select max(cc) from sh_20110301_0331_ptp_t group by tim) order by tim
12.拆分分隔符
update table_Aset custom11=substring_index(custom11,';',1)
13 日期转数字
update table_Aset convert_date=unix_timestamp(record_date)
tt=TIME_TO_SEC(time_stamp)
14 MD5,字段不能有null
update table_Aset dd = MD5(CONCAT_ws('$',id,attribute_key,attribute_value)
15 上一个月的数据
select * from review where period_diff(date_format(now() , '%Y%m') , date_format(`Review_Date`, '%Y%m')) =1;
16 上一周的数据
select Rating,count(*) from review where week(`Review_Date`)=7 group by Rating
17 最近7天的数据
select week(`Review_Date`) from review where date_sub(curdate(), INTERVAL 7 DAY) <= date(`Review_Date`)
18 字符变日期
update table_Aset tt= str_to_date(date_created,'%m/%d/%Y')
19 字段拆分
update table_Aset custom=substring_index(custom,';',1)
相关文章推荐
- postgres数据库几个重要的备忘命令
- MySql delimiter的作用是什么
- 数据库结构设计-了解多少
- SQL Server: Top 10 Secrets of a SQL Server Expert
- SQL Server: Top 10 Secrets of a SQL Server Expert
- SQL SERVER 使用select和union插入多条数据
- pl/sql中的record用法
- MERGE的用法
- MySQL5 LOAD DATA 的使用
- MongoDB:mongodb的备份和恢复
- MongoDB:mongodb的备份和恢复
- oracle直接调用web services
- SQL SERVER UNION和UNION ALL
- memcached分布均匀性
- memcache command
- Mysql中查找重复数据,删除重复数据
- oracle10g安装
- MyEclipse配JDBC连接oracle后中文字段出现乱码!
- 理想化 redis
- oracle 列属性修改