首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

一个删除有关问题

2014-01-17 
一个删除问题本帖最后由 tmj3465968 于 2013-12-24 18:19:51 编辑表 t1(name,number)数据如下namenumber10

一个删除问题
本帖最后由 tmj3465968 于 2013-12-24 18:19:51 编辑 表 t1(name,number)
数据如下
name    number
10086    0
10086    96
10000    0
我希望就是删除  number=0的数据 但是如果 name没有相同的就不删除, 也就是删除 第一条数据。
该怎么写呢。。
[解决办法]

delete from t1 a
 where a.number = 0
   and a.name in
       (select name from t1 group by name having count(1) > 1);

[解决办法]
引用:
表 t1(name,number)
数据如下
name    number
10086    0
10086    96
10000    0
我希望就是删除  number=0的数据 但是如果 name没有相同的就不删除, 也就是删除 第一条数据。
该怎么写呢。。


DELETE FROM T1 WHERE T1.NUM=0 AND EXISTS(SELECT 1 FROM T1 T2 WHERE T1.NAME=T2.NAME AND T2.NUM<>0)

[解决办法]
楼主、 假如有3个name为‘A’的number都为0,是删其中2条还是全部删除呢?

--删除而留一条name相同的记录
delete from t1
 where rowid in (select rid
                   from (select name,
                                row_number() over(partition by name order by number desc) as rn,
                                rowid as rid
                           from t1)
                  where rn > 1)
   and number = 0;

[解决办法]
  DELETE FROM t1 WHERE  NUMBER=0 AND NAME IN
    (SELECT NAME FROM t1 GROUP BY NAME HAVING COUNT(1)>1)

删除的数据要同时满足两个条件:1.number=0  2.name按组统计大于1,即有重复的

热点排行