• sql 消除重复


    SELECT *
    FROM tb_music_mp3
    WHERE (songtype IN
    (SELECT songtype
    FROM tb_music_mp3
    GROUP BY songtype
    HAVING (COUNT(songtype) > 1)))

    SELECT *
    FROM tb_usertable_other_100000
    WHERE (userid IN
    (SELECT userid
    FROM tb_usertable_other_100000
    GROUP BY userid
    HAVING (COUNT(userid) > 1)))

    select *
    FROM tb_usertable_main
    WHERE (userid IN
    (SELECT userid
    FROM tb_usertable_main
    GROUP BY userid
    HAVING (COUNT(userid) > 1)))
    order by userid


    delete
    FROM tb_usertable_other_5600000
    WHERE (id NOT IN
    (SELECT MIN(id)
    FROM tb_usertable_other_5600000
    GROUP BY userid))

    在大的数据库应用中,经常因为各种原因遇到重复的记录,造成数据的冗余和维护上的不便。
    id custom
    1 化工公司
    2 化工公司
    3 化工公司
    4 软件公司
    5 制药公司
    6 制药公司

    现在想将重复的留下一条,重复的删除,结果如下:
    id custom
    1 化工公司
    4 软件公司
    5 制药公司

    delete 表 where id not in(select min(id) from 表 group by custom)

    SELECT *
    FROM tb_music_mp3
    WHERE (id NOT IN
    (SELECT MIN(id)
    FROM tb_music_mp3
    GROUP BY songtype))

    SELECT id, songtype, songname
    FROM tb_music_mp3 a
    WHERE (NOT EXISTS
    (SELECT 1
    FROM tb_music_mp3 b
    WHERE a.songtype = b.songtype AND a.id > b.id))

    1.用rowid方法

    2.用group by方法

    3.用distinct方法

    1。用rowid方法

    据据oracle带的rowid属性,进行判断,是否存在重复,语句如下:
    查数据:
    select * from table1 a where rowid !=(select max(rowid)
    from table1 b where a.name1=b.name1 and a.name2=b.name2......)
    删数据:
    delete from table1 a where rowid !=(select max(rowid)
    from table1 b where a.name1=b.name1 and a.name2=b.name2......)

    2.group by方法

    查数据:
      select count(num), max(name) from student --列出重复的记录数,并列出他的name属性
      group by num
      having count(num) >1 --按num分组后找出表中num列重复,即出现次数大于一次
    删数据:
      delete c
      这样的话就把所有重复的都删除了。

    3.用distinct方法 -对于小的表比较有用

    create table table_new as select distinct * from table1 minux
    truncate table table1;
    insert into table1 select * from table_new;

    delete
    FROM tb_book_list
    WHERE (id NOT IN
    (SELECT max(id)
    FROM tb_book_list
    GROUP BY bookid))
    (5065 行受影响)

  • 相关阅读:
    Elasticsearch 缓存总结
    ElasticSearch-集群
    HTTP协议详解
    HTTPS总结
    ElasticSearch--Document
    正排索引和倒排索引
    线上OOM排查步骤总结
    线程池-四种拒绝策略总结
    netty篇-练手
    netty篇-UDP广播
  • 原文地址:https://www.cnblogs.com/lianruihong/p/7799530.html
Copyright © 2020-2023  润新知