| 订阅 | 在线投稿
分享
 
 
 

实例讲解Oracle数据库自动增加ID的sql

2008-08-03 06:51:35 编辑來源:互联网 国际版 评论
 
 
  本文的主要内容包括:在Oracle中实现自增型ID,删除数据表中的重复记录。

  一.自增型ID

  1.首先创建 sequence

  create sequence seqmax increment by 1

  2.得到一个ID

  select seqmax.nextval ID from dual

  3.若要删除一个sequence

  drop sequence seqmax;

  二.删除数据表中的重复记录

  1.先创建一个表

  Create TABLE "APPTEST" (

  "ID" INTEGER primary key NOT NULL,

  "MOBILE" nvarchar2(50) NOT NULL

  );

  2.假设其中手机号大量重复,要删除重复记录,可以有如下两种方法:

  (1)简单利用rowid删除

  delete from APPTEST a where rowid not in (select max(rowid) from APPTEST b where a.mobile=b.mobile);

  据说,这种方法在数据量很大时,效率并不高

  (2)利用分析函数

  delete APPTEST where rowid in (

  select rid from

  (select rowid rid,row_number() over(partition by mobile order by id desc) rn from APPTEST )

  where rn > 1) ;

  (3)做temp表
 
 
本文的主要内容包括:在Oracle中实现自增型ID,删除数据表中的重复记录。 一.自增型ID 1.首先创建 sequence create sequence seqmax increment by 1 2.得到一个ID select seqmax.nextval ID from dual 3.若要删除一个sequence drop sequence seqmax; 二.删除数据表中的重复记录 1.先创建一个表 Create TABLE "APPTEST" ( "ID" INTEGER primary key NOT NULL, "MOBILE" nvarchar2(50) NOT NULL ); 2.假设其中手机号大量重复,要删除重复记录,可以有如下两种方法: (1)简单利用rowid删除 delete from APPTEST a where rowid not in (select max(rowid) from APPTEST b where a.mobile=b.mobile); 据说,这种方法在数据量很大时,效率并不高 (2)利用分析函数 delete APPTEST where rowid in ( select rid from (select rowid rid,row_number() over(partition by mobile order by id desc) rn from APPTEST ) where rn > 1) ; (3)做temp表
󰈣󰈤
 
 
>>返回首页<<
 为你推荐
 
 
 
 转载本文
 UBB代码 HTML代码
复制到剪贴板...
 
 
 热帖排行
 
 
王朝网络微信公众号
微信扫码关注本站公众号wangchaonetcn
 
  免责声明:本文仅代表作者个人观点,与王朝网络无关。王朝网络登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
©2005- 王朝网络 版权所有