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;

浙公网安备 33010602011771号