zoukankan      html  css  js  c++  java
  • 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 行受影响)

  • 相关阅读:
    解决Nginx不支持pathinfo的问题
    PHP获取当前服务器信息的基本语句
    权重结构的加权排序算法
    《深入探讨C++对象模型》笔记 二
    链表的一些常用操作
    invalidate作用
    GetMessage()和PeekMessage()区别
    C语言程序编译的内存分配
    assert() 宏用法
    开始写博客
  • 原文地址:https://www.cnblogs.com/lianruihong/p/7799530.html
Copyright © 2011-2022 走看看