oracle数据库 批量将原有数据表中数据插入新表

rt,本人数据库小白。做一个项目,需要从原有数据表中获取部分记录,并插入新表。假如原始数据表是如下形式:
姓名 更新日期 身高
张三 89年 150cm
张三 95年 160cm
张三 99年 170cm
李四 88年 150cm

那么我新的表格需要这种形式
姓名 更新日期 身高
张三 99年 170cm
李四 88年 150cm

即有选择性记录数据,请问如何实现,在线等

第1个回答  2015-11-07
可以通过insert into …… as select 语句来进行实现。
sql:insert into tablename2( id,name) as select id ,name from tablename2 where 条件语句。
备注:以上语句中插入的字段顺序必须要和查询的语句的顺序保持一致,否则会报错,如果有条件语句的话,可以增加 where条件。
第2个回答  2013-07-16
create table 新表(相应字段) as
select distinct name,max(formate(日期,"YYYY")),max(身高) from 旧表

其中日期格式你自己查看下忘记怎么格式化了意思就是这样,这样只取更新日期最近的,至于身高会不会是最大感觉楼主例子还是有问题没描述清楚,身高一定会增高?和更新日期增加而增加?
第3个回答  2013-07-16
create table newtable as select * from oldtable
where rowid=(select rowid from oldtable where (姓名,更新日期) in (select 姓名,max(更新日期) from oldtable group by 姓名));

此语句适用于 ‘身高’ 字段后面还有更多字段本回答被提问者采纳
第4个回答  2013-07-16
insert into 新表(姓名,更新日期,身高)
select 姓名,更新日期,身高
from 原表
where ((姓名=’张三‘ and 更新日期=’99年‘) or (姓名=’李四‘ and 更新日期=’88年‘))追问

问题是我姓名字段有很多条记录,有一种高效的循环访问机制吗?

追答

你具体是想根据姓名怎么取数据,如果只是简单的去重复,可以select distinct(姓名),更新日期,身高
from 原表

本回答被网友采纳
第5个回答  2013-07-16
create table new_tablename
as
select 姓名,max(更新日期) 更新日期,身高 from old_table group by 姓名,身高;
相似回答