Sql在Mysql的执行
昨天解析了dblp.xml,存入数据库,生成了若干张临时表。今天上午,对这些临时表进行处理,然后存入实验设计的表中。数据库的数据量比较大,50多M,80多万条记录。因而执行sql时,就遇到了很多问题。
1、去除重复tuple
原始dblp.xml中,同一论文的存在几个完全相同的<cite>,所以要对数据库中的数据进行处理。网上搜到一段代码:
1) 查询某些属性相同tuple的方法
select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
2)删除某些属性相同tuple的方法
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)
我先执行了1,是在一个有79,000条记录的表上执行的。数分钟后(10分钟以上),结果顺利出来。然后我在记录数为212,273的表上执行2,很久之后还没有出结果。于是我又执行了1),放在532,555条记录的表上。这下情况不妙,电脑直接死机了,cpu100%疯狂地运转着。正常关机都不行,最后只好强行按下了关机键。
重启后,我不死心,在532,555条记录的表执行1。1.5小时过去了,还没有结果出现。
看来下午要好好研究一下sql在mysql的执行效率了。
2、select into
Mysql中不支持select into table的语法,但可以用以下2个语句替代。
1)create table table_new (select * from table_old);
2)insert into table_new(name,password...) select table_old.name, table_old.password from table_old where
table_old.name="ct";
相关文档:
Sql Server中的日期与时间函数
1. 当前系统日期、时间
select getdate()
2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值
例如:向日期加上2天
select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000
......
【引用:猛犸技术文章摘要
】
经测试,方法二可成功删除数据,方法一、三 删除数据失败。请路过的朋友,指点迷津。。。
问题:一个表有自增的ID
列,表中有一些记录内容重复,也就是说这些记录除了ID
不同之外,其他的信息都相同。需要把重复的记录保留一条,剩下的删除
方法一:还是2000
年的时候一位Oracl ......
1.reverse(str)函数: 返回颠倒字符顺序的字符串str, 该函数对多字节可靠的.
mysql> select * from user;
+----+------------------+
| id | name |
+----+------------------+
| 1 | test &nbs ......
--如果是实表可以用
if exists (select * from sysobjects where id = object_id(N'[dbo].[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[表名]
--如果是临时表可以用(说明,如果用查找实表方法来打临时表会找不到.发布区别对代.)
if object_id('tempdb..##temp') is not null
......