每一行数据都有一个伪列rowid,
SELECT * FROM aaa 
     WHERE ROWID!=(SELECT MAX(ROWID) FROM aaa D 
       WHERE aaa.name=D.name AND aaa.sal=D.sal) 是数据值相同,但是伪列的值不同,当然是重复的记录了.

解决方案 »

  1.   

    查找重复记录
    select * from your_table
    where rowid!=( select max(rowid) from your_table yyyy 
                      where yout_table.c1=yyyy.c1)删除重复记录
    delete  from your_table
    where rowid!=( select max(rowid) from your_table yyyy 
                      where yout_table.c1=yyyy.c1)
      

  2.   

    TO  bluelamb(bluelamb) :
    SELECT MAX(ROWID) FROM aaa D 
           WHERE aaa.name=D.name AND aaa.sal=D.sal 这句是选出重复记录里rowid最大的那个?
    SELECT * FROM aaa WHERE ROWID!=最大的rowid,结果不应该是有3条记录的rowid都不等于最大的那个么?
      

  3.   

    1.SELECT MAX(ROWID) FROM aaa D WHERE aaa.name=D.name AND aaa.sal=D.sal 
    这句是选出重复记录里rowid最大的
    2.SELECT * FROM aaa  是查出所有的
    name sal   假设rowid
       zp   1    1
       zp   1    2
       zp   1    3
    SELECT * FROM aaa 
         WHERE ROWID!=(SELECT MAX(ROWID) FROM aaa D 
           WHERE aaa.name=D.name AND aaa.sal=D.sal)
    相当
    SELECT * FROM aaa WHERE ROWID!=3 当然有两条记录了,这辆条就是重复的记录(不包括最大的
    3.
    SELECT * FROM aaa 
         WHERE ROWID<=(SELECT MAX(ROWID) FROM aaa D 
           WHERE aaa.name=D.name AND aaa.sal=D.sal) 这样可以查出三条记录,包括最大的rowid那条4.主要的原因在于!=
      

  4.   

    to bluelamb(bluelamb) ,表aaa里有4条记录啊。
    name sal 假设rowid
    zp   1     1
    zp   1     2
    zp   1     3
    zpp  2     4
    按你所说,max(rowid)=3 ,select * from aa where rowid!=3 就有3条记录阿!
      

  5.   

    数据:
    表aaa
       name sal
       zp   1
       zpp  2
       zp   1
       zp   1 
    SELECT * FROM aaa 
         WHERE ROWID!=(SELECT MAX(ROWID) FROM aaa D 
           WHERE aaa.name=D.name AND aaa.sal=D.sal); 
    看一下oracle是如何处理的:
    假设第一条的orwid最大
    首先取到第一条zp 1,
    执行SELECT MAX(ROWID) FROM aaa D 
           WHERE D.name='zp' AND D.sal=1
    结果不符合条件,不输出
    第二条
    执行SELECT MAX(ROWID) FROM aaa D 
           WHERE D.name='zpp' AND D.sal=2
    结果不符合条件,不输出
    后面两条都符合条件,输出。
    所以执行结果是:
       name sal
       zp   1 
       zp   1