搜索墙首页  编程技术  java  asp  ajax  php  c/c#/c++  数据库  oracle  mysql  db2  操作系统  windows  linux  股吧
首页 > 编程 > 数据库 > oracle
 1         
1楼  slfh 2007-01-24 14:57:04

有个头疼的事情

比如
A表中有   a,b,c.....N个字段
A.c的状态为(0,或1)
A.a=X(任意数值时)

A.b可以有很多不同数值     c是标志b是否有效

现在的问题是   当A.a一定时       相同的b   有效记录却有两条

请问如何把有效的两条中的一条c置为0(失效)

要批量处理整个表中的数据

谢谢
2楼  yuanmu 2007-01-25 10:12:34

max(rowid)
3楼  slfh 2007-01-25 11:28:59

删除重复的b里的一条     也行
4楼  tianyacao007 2007-01-25 14:43:19

update
(
    select
    a,b,c
    from
    A
    where
      c=   1
    group   by
      a,b
  having   count(*)   >   1
)
set
c=0
5楼  yuanmu 2007-01-26 09:37:47

update   a  
set   c   =   0
where   rowid   in
(
select   max(rowid)   from   a  
group   by   a.a,a.b
having   count(*)   >   1
)
6楼  hdhai9451 2007-03-23 09:00:00

update   a  
set   c   =   0
where   c=1   and   rowid   in
(
select   max(rowid)   from   a   where   a.c=1
group   by   a.a,a.b
having   count(*)   >   1
)
7楼  jiazheng 2007-03-23 12:19:09

本人??Oracle
??
  tianyacao007(天涯草-请别在触碰我荒凉心中还在痛的角落)   (   )   信誉:100         Blog     2007-1-25   14:43:20     得分:   0    
     
update
(
    select
    a,b,c
    from
    A
    where
      c=   1
    group   by
      a,b
  having   count(*)   >   1
)
set
c=0

的???法是否能?行

8楼  Eric_1999 2007-03-23 13:01:07

no!
9楼  junval 2007-03-25 12:17:04

删除重复记录  

最高效的删除重复记录方法   (   因为使用了ROWID)  


DELETE   FROM   a   E  

WHERE   E.ROWID   >   (SELECT   MIN(X.ROWID)  

FROM   a   X  

WHERE   X.b   =   E.b);  
10楼  junval 2007-03-25 12:19:16

或者   更新记录

UPDATE   a   E   SET   c=0

WHERE   E.ROWID   >   (SELECT   MIN(X.ROWID)  

FROM   a   X  

WHERE   X.b   =   E.b);
11楼  chenyanan722 2007-03-27 09:06:18

呵呵   何必搞得那么复杂,楼上的那个不错,我也写了个语句:
update  
    A   A1  
set  
    c=0  
where  
    A1.rowid> (select   min(A2.rowid)   from   A   A2   where   A1.a=A2.a   and   A1.b=A2.b);
 1         
您的发言将按有关规定都会存档,您须为所发表后果负责,请您遵纪守法并注意语言文明。
标题:求SQL语句
热门关注
标题回复点击
Oracle 10g (ASM):Sample Implementation0743
Oracle 正版用户授权0692
动态性能视图(Dynamic perfermance view V$)0686
EM 无法启动&&重新完全配置EM0560
小布老师Oracle 9i DBA Fundamentals II0345
ORA-1652: unable to extend temp segment诊断以及解决0308
缓冲处理器 buffer handle0275
locate pl/sql bottleneck0271
OracleDBConsole 服务因 2 (0x2) 服务性错误而停止。请问一下如何解决!2267
L1:Buffer Cache0264
搜索墙@2009 www.pkwall.com all rights reserved QQ:276471788 [京ICP备09111534号]
声明:本站部分数据来源于网络,仅供参考,如有版权问题,请联系我们,我们将及时删除!转载本站请注明来源