• SQL 数据排重,去掉重复数据 有用


    .最大的错误:
        在对数据排重的时候,首先想到的就是Distinct,虽然这很管用,但多数场合下不适用,因为通常排重后还要做进一步处理,比如对编号排重后要按日期统计等。

        无法排重的Group by ... having ...
        虽然可以用Group by userid having count(*) =1 或者>1 ,但只能找出重复或者不重复的记录,好像达不到distinct 的效果(我是没做到,啊笨)。

        这个可以:
        用select * from table t where not exists (select 1 from table where userid=t.userid and submit_time > submit_time) (submit_time为记录入库时间,或者可以用其他的只要是数据库中不重复的字段就成),同时还达到了一个效果,第一次入库的userid才被计算在内,这在许多情况下还是比较有用的(比如处理误操作什么的)。

        值得注意:
         另外在用上面的方法排重的时候,如果外面的select * .... where ...  后还有其他条件,则这些条件也要写入 select 1 from .... where .... 中,即内、外条件要相同(我就是没注意到这点,发现结果比Distinct 上下差几条,郁闷了好久:( )

    2.还可以这样:
     
    select from
    (select ID,Name,Email ROW_NUMBER() over (partition by Email order by ID descas rn  from 学员表 ) K
    where rn<2;
     
     
    3.根据一个字段排重
    select * from 表 
    where 字段 in (select 字段 from 表 group by 字段 having count(字段) > 1) 
    4.sql1="select 标题,参考价格,内容,生产厂商,配件类型,适用机型,配件性能 from Contentpj GROUP BY 标题,参考价格,内容,生产厂商,配件类型,适用机型,配件性能"
  • 相关阅读:
    JavaScript实现继承的几种方式总结一
    MyISAM key 压缩
    Visual Studio2010英文版安装中文帮助文档
    回忆我是怎样走上程序之路的(上)起因
    hdu2054 A==B
    顺序表的增删排序
    hdu2145 zz's Mysterious Present
    hdu 2141 Can you find it?
    hdu1162 Eddy's picture
    hdu1142 A Walk Through the Forest
  • 原文地址:https://www.cnblogs.com/shan1393/p/9264888.html
Copyright © 2020-2023  润新知