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 行受影响)

  • 相关阅读:
    新建maven web工程报错
    Linux的系统suspend和resume
    Linux内核配置---menuconfig
    printk()函数学习笔记
    驱动调试笔记
    i2c接口笔记
    无线路由器的加密模式WEP,WPA-PSK(TKIP),WPA2-PSK(AES) WPA-PSK(TKIP)+WPA2-PSK(AES)。
    Linux下sniffer实现(转)
    驱动模块(3)——Linux交叉编译工具链
    ehci ohci 驱动逻辑
  • 原文地址:https://www.cnblogs.com/lianruihong/p/7799530.html
Copyright © 2011-2022 走看看