VimIy微民网,让世界倾听微民的声音! 设为首页 | 加入收藏 | 网站地图
当前位置:主页 > 大杂烩 >

求个sql的语句,手工删除要疯啊……

整理时间:2014-04-10 20:34 热度:°C

【楼主】2014-05-09 12:01

» 求个sql的语句,手工删除要疯啊……
    就是一个表,一列是姓名,一列是工资
    然后姓名有重复的,放在一起,取最大工资的那一行,其他的删除……
    大游窝码农多,求顺手帮个忙~~
    
网友评论2014-05-09 12:08


    你没说是啥数据库
    
网友评论2014-05-09 12:11


    Drop tableA
    
网友评论2014-05-09 12:11


    你这要求有问题...
    姓名重复的你能肯定是同一个人吗?
    
网友评论2014-05-09 12:14


    姓名当关键字不科学(比如我有2个同学都叫王磊),用最大值当最新值也不科学。好像这个数据库设计有问题。
    


网友评论2014-05-09 12:14


    group by 姓名 取一个max(工资),select into 到一张新表
    
    视图这么玩还行,姓名表 join 一下工资表,要是这是一张表,只能说你们做开发的很牛啊。
    


网友评论2014-05-09 12:15


    你这数据库有问题吧,不考虑重名?
    
网友评论2014-05-09 12:16


    delete*from*
    
网友评论2014-05-09 12:17


    Order by NAME DESC,保留第一条其他的删掉.难道不是?
    
网友评论2014-05-09 12:18


    select name,max(salary) into tableB from tableA
    group by name
    
    然后tableB就是你要的
    
网友评论2014-05-09 12:18


    delete from table where +范围
    
网友评论2014-05-09 12:19


    Reply Post by jeroment (2014-05-09 12:16):
    
    delete*from*
    
    truncate更好
    
网友评论2014-05-09 12:20


    这啥要求,不让人同名了啊
    
网友评论2014-05-09 12:21


    如果数据表只有这两个字段,表名TB_Pay
    SELECT Name,MAX(Pay)AS Pay
    INTO #TB_MaxPay
    FROM TB_Pay
    GROUP BY Name
    
    TRUNCATE TABLE TB_Pay
    
    INSERT INTO TB_Pay(Name,Pay)
    SELECT Name,Pay
    FROM #TB_MaxPay
    
    DROP TABLE #TB_MaxPay
    
    如果还有其他字段
    SELECT Name,MAX(Pay)AS Pay
    INTO #TB_MaxPay
    FROM TB_Pay
    GROUP BY Name
    
    DELETE A
    FROM TB_Pay A
    WHERE NOT EXISTS(SELECT 1 FROM #TB_MaxPay B WHERE B.Name=A.Name AND B.Pay=A.Pay)
    
    DROP TABLE #TB_MaxPay
    
    
    
    操作前做好备份!
    


网友评论2014-05-09 12:21


    insert into 新表(姓名,工资)
     select 姓名, max(工资) from 表 groub by 姓名;
    
    删除原表,把新表表名改为原表名.
    
网友评论2014-05-09 12:25


    drop database XXXXX 一了百了
    
网友评论2014-05-09 12:29


    这个表可以想象为:存放每个人的月工资。楼主的需求就是:把每个人的最高月工资数取出来,至于是哪个月的不关心。这样想的话,其实表设计的没问题。
    
网友评论2014-05-09 12:31


    Reply Post by 逐水而居 (2014-05-09 12:14):
    姓名当关键字不科学(比如我有2个同学都叫王磊),用最大值当最新值也不科学。好像这个数据库设计有问题。
    没事我是打个比方好说而已,一般是工号……
    
网友评论2014-05-09 12:34


    Reply Post by 苍月星痕 (2014-05-09 12:21):
    如果数据表只有这两个字段,表名TB_Pay
    SELECT Name,MAX(Pay)AS Pay
    INTO #TB_MaxPay
    FROM TB_Pay
    GROUP .......
    感谢感谢,这就是我想要的了~~
    还是得转另外一张表再转回来吧?不能只一张表内操作吧?
    
网友评论2014-05-09 12:37


    select *
    into XX
    from ( select 'aa' as 姓名, 1 as 工资
     union all select 'aa', 2
     union all select 'aa', 3
     union all select 'bb', 3
     union all select 'bb', 4
     union all select 'cc', 4
    ) a;
    go
    select * from XX;
    go
    select * into XX_BAK from XX;
    go
    delete a
    from XX as a
    where 工资 <> (select max(工资) from XX b where a.姓名 = b.姓名);
    go
    select * from XX;
    go
    

    
    
    

关于网站 | 网站声明 | 用户反馈 | 合作伙伴 | 联系我们
Copyright 2012年2月8日 苏ICP备12030052号-3