比如一个表t1,里面的字段是id,name,pass
我想用一条SQL语句实现下面的功能
就是检查一下表里有没有相同的记录
比如有三条 admin,123
有的话就删除后两条
比如有两条 abc,456,就删除后一条这条SQL语句怎么写呢?
急用

解决方案 »

  1.   

    id,name,pass
    1  admin,123
    2  admin,123
    3  admin,123
    删除第三条?
      

  2.   

     (不要高估你的汉语表达能力或者我的汉语理解能力)
       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  3.   

    id,name,pass
    1  admin,123
    2  admin,123
    3  admin,123如果这样,则delete t1 from t1,(select id from t1 a where exists (select 1 from t1 where name=a.name and pass=a.pass and id<a.id)) b where t1.id=b.id
      

  4.   

    DELETE A FROM tt1 a INNER JOIN (SELECT `name`,pass,MAX(id) AS ma FROM tt1 GROUP BY `NAME`,pass) b 
    ON a.`name`=b.`name` AND a.pass=b.pass AND a.id=b.ma;
      

  5.   

    这个问题已经解决了,不提了,不过又有新问题了
    我执行了一个delete语句之后,接着执行update语句,结果报错但是执行delete之后,稍微等一会,再执行update语句就能成功,这怎么改啊?
      

  6.   

    [SQL] delete t from T_Task_NWAQY_User  as t
    inner  join (select   vTaskName,pcName,IP1,min(id) as id   from  T_Task_NWAQY_User  group   by   vTaskName,pcName,IP1)  as a
    on   t.pcName  = a.pcName 
    and t.vTaskName=a.vTaskName 
    and t.IP1=a.IP1
    and   t.id   <>   a.id   update T_Task_NWAQY_User 
    set iState='1' 
    where vTaskName='哈哈' 
    and iState='2';
    [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'update T_Task_NWAQY_User 
    set iState='1' 
    where vTaskName='哈哈' 
    and iStat' at line 8
      

  7.   

    delete t from T_Task_NWAQY_User  as t
    inner  join (select   vTaskName,pcName,IP1,min(id) as id   from  T_Task_NWAQY_User  group   by   vTaskName,pcName,IP1)  as a
    on   t.pcName  = a.pcName  
    and t.vTaskName=a.vTaskName  
    and t.IP1=a.IP1
    and   t.id   <>   a.id  
    这一句后的分号在哪儿?
      

  8.   

    你说的没错,我加上分号后,在命令行里执行是好了,但是!!
    但是在VC程序里调用这两个SQL语句,还是不成功