oracle,insert 语句插入一条记录

1.oracle,insert 语句插入一条记录后要求,返回主键id値。解决思路

oracle里面没有自增字段,在oracle里面需要定义一个序列,你可以写一个存储过程定义一个输出参数

SQL code
create sequence seqID
minvalue 1
maxvalue 999999999999999999999999999
start with 1
increment by 1
nocache
order;

create or replace procedure sp_insert(aName int,rst out int) is
begin
  insert into tablename(id,name) values(seqID.nextval,aName);
  rst:=seqID.currval;
end;

2.Oracle 应用一条语句删除重复数据
Oracle 使用一条语句删除重复数据

在大的数据库应用中,经常因为各种原因遇到重复的记录,造成数据的冗余和维护上的不便

 

 

1.用rowid方法   
    
  2.用group   by方法   
    
  3.用distinct方法   
    
    
    
  1。用rowid方法   
    
  据据oracle带的rowid属性,进行判断,是否存在重复,语句如下:   
  查数据:   
          select   *   from   table1   a   where   rowid   !=(select     max(rowid)       
          from   table1   b   where   a.name1=b.name1   and   a.name2=b.name2......)   
  删数据:   
        delete     from   table1   a   where   rowid   !=(select     max(rowid)       
          from   table1   b   where   a.name1=b.name1   and   a.name2=b.name2......)   
    
  2.group   by方法   
    
  查数据:   
    select   count(num),   max(name)   from   student   --列出重复的记录数,并列出他的name属性     
    group   by   num     
    having   count(num)   >1   --按num分组后找出表中num列重复,即出现次数大于一次     
  删数据:   
    delete   from   student     
    group   by   num     
    having   count(num)   >1   
    这样的话就把所有重复的都删除了。   
    
  3.用distinct方法   -对于小的表比较有用   
    
  create   table   table_new   as     select   distinct   *     from   table1   minux     
  truncate   table   table1;   
  insert   into   table1   select   *   from   table_new;

3.oracle 怎么随机取一条记录
不想用sample 就下面这样喽:

select *
  from (select t.*, row_number() over(order by dbms_random.value) rn
          from t) t
 where t.rn = 1;

------解决方案--------------------
这是我用的,5w+数据用时0.13s
SELECT * FROM (SELECT * FROM t_enterprise_info order by dbms_random.value) WHERE rownum =1;


posted @ 2014-04-04 11:26  nik2011  阅读(1195)  评论(0)    收藏  举报