精华内容
下载资源
问答
  • * 删除一条商品???这个怎么写? */ public void deleteMessage(ShangPinBean model) { SQLiteDatabase db = mShangPinDBHelper.getWritableDatabase(); ContentValues values = new ContentValues(); ...
  • 在实际开发中,可能会遇到数据库条数据重复了,此时我们需要删除重复数据,只保留一条有效数据,用SQL语句怎么实现呢,下面我们模拟一下: 1.准备重复数据: 2.过滤出存在重复数据的信息: SQL语句: SELECT ...

    在实际开发中,可能会遇到数据库多条数据重复了,此时我们需要删除重复数据,只保留一条有效数据,用SQL语句怎么实现呢,下面我们模拟一下:

    1.准备重复数据:
    在这里插入图片描述
    2.过滤出存在重复数据的信息:

    SQL语句:

    SELECT
    	dname 
    FROM
    	dept 
    GROUP BY
    	dname 
    HAVING
    	count( dname ) >1
    

    数据库筛选结果:
    在这里插入图片描述
    3.从重复数据中筛选出一条需要保存的数据:

    SQL语句:

    SELECT
    	min( deptno ) -- max( deptno )
    	
    FROM
    	dept 
    GROUP BY
    	dname 
    HAVING
    	count( dname ) >1
    

    这里使用数据库的MIN或者MAX函数筛选出一条需要保存数据即可。

    数据库筛选结果:
    在这里插入图片描述
    4.删除重复数据,即从重复的数据中,删除掉需要保留数据之外的所有信息:

    SQL:

    DELETE 
    FROM
    	dept 
    WHERE
    	dname IN ( SELECT dname FROM dept GROUP BY dname HAVING count( dname ) > 1 ) -- 过滤出重复的dname
    	AND deptno NOT IN ( SELECT min( deptno ) AS deptno FROM dept GROUP BY dname HAVING count( dname ) > 1 ) -- 过滤出不在需要保留的id之外的所有id
    	
    

    如果是oracle数据库,上面的SQL语句可以正常执行,可是换成mysql数据库,SQL语句执行会报错:

    1093 - You can't specify target table 'dept' for update in FROM clause
    

    含义:不能在同一表中查询的数据作为同一表的更新数据。

    适用于mysql数据库的SQL:

    DELETE 
    FROM
    	dept 
    WHERE
    	dname IN ( SELECT * FROM ( SELECT dname FROM dept GROUP BY dname HAVING count( dname ) > 1 ) a ) 
    	AND deptno NOT IN ( SELECT * FROM ( SELECT min( deptno ) AS deptno FROM dept GROUP BY dname HAVING count( dname ) > 1 ) b )
    

    数据库最后数据:
    在这里插入图片描述
    到这里,删除重复数据成功!

    展开全文
  • 在几千记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断  select * from people  where peopleId in (select peopleId from ...

    在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢
    1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 
    select * from people 
    where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 

    2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录 
    delete from people 
    where   peopleName in (select peopleName    from people group by peopleName      having count(peopleName) > 1) 
    and   peopleId not in (select min(peopleId) from people group by peopleName     having count(peopleName)>1) 

    3、查找表中多余的重复记录(多个字段) 
    select * from vitae a 
    where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) 

    4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录 
    delete from vitae a 
    where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) 
    and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1) 

    5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录 
    select * from vitae a 
    where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) 
    and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)   

    6、消除一个字段的左边的第一位:
    update tableName set [Title]=Right([Title],(len([Title])-1)) where Title like '村%'

    7、消除一个字段的右边的第一位:
    update tableName set [Title]=left([Title],(len([Title])-1)) where Title like '%村'

    8、假删除表中多余的重复记录(多个字段),不包含rowid最小的记录 
    update vitae set ispass=-1
    where peopleId in (select peopleId from vitae group by peopleId

    展开全文
  • 1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select ...2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有...

     1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)

    2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录 delete from people where   peopleName in (select peopleName    from people group by peopleName      having count(peopleName) > 1) and   peopleId not in (select min(peopleId) from people group by peopleName     having count(peopleName)>1)

    3、查找表中多余的重复记录(多个字段) select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)

    4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录 delete from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

    5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录 select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)  

    6.消除一个字段的左边的第一位:

    update tableName set [Title]=Right([Title],(len([Title])-1)) where Title like '村%'

    7.消除一个字段的右边的第一位:

    update tableName set [Title]=left([Title],(len([Title])-1)) where Title like '%村'

    8.假删除表中多余的重复记录(多个字段),不包含rowid最小的记录 update vitae set ispass=-1 where peopleId in (select peopleId from vitae group by peopleId,seq having count(*) > 1) and seq in (select seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1) 

    展开全文
  • 如何用一条语句删除多张表数据,MySql适用,sqlite不可以。 按照正常逻辑是 delete * from tbl1 where id=2; delete * from tbl2 where id=2; delete * from tbl3 where id=2; 现在使用这样一条语句 ...

    如何用一条语句删除多张表数据,MySql适用,sqlite不可以。
    按照正常逻辑是

    delete * from tbl1 where id=2;
    delete * from tbl2 where id=2;
    delete * from tbl3 where id=2;
    

    现在使用这样一条语句
    在这里插入图片描述

    展开全文
  • 如果要删除数据表中所有数据只要遍历一下数据库删除就可以了,清除所有数据我们可以使用搜索出所有表名,构造为一条SQL语句进行清除了,这里我一一给各位同学介绍。 使用sql删除数据库中所有表是不难的,就是...
  • 如果要删除数据表中所有数据只要遍历一下数据库删除就可以了,清除所有数据我们可以使用搜索出所有表名,构造为一条SQL语句进行清除了,这里我一一给各位同学介绍。 使用sql删除数据库中所有表是不难的,...
  • 因为数据上传到平台一直报错(报了三四天了),天报几万条数据错误,吓死我了,一直在找原因,还被被领导骂了一通,最后找到是因为抽取的数据重复的原因导致后台jar包运行一直报错,特别崩溃,然后查了天,终于...
  • Oracle数据库删除数据3种恢复语句

    千次阅读 2018-05-10 15:09:12
    我在这里为大家介绍几种误删除数据库中重要数据的恢复方法(不考虑全库备份和利用归档日志)第一种数据恢复方法是利用oracle提供的闪回方法进行数据恢复,适用于delete删除一条记录)方式:首先需要知道是什么时间...
  • 最近进行数据库操作,遇到一个问题,就是大量删除一数据表中的数据后,由于设定了id是自增的,导致再插入时,默认生成的id会很大,这个时候想要再次插入新的数据,应该怎么办呢? 1.明确目前最后一个id的大小 ...
  • 今天开发提供了一条删除表中数据语句,delete语句。放在plsql中执行了之后发现执行了半个小时还没有结束,这个时候开发还有脚本需要执行,本想创建新的会话,来执行开发提供的语句,可是一个简单的建表语句也不...
  • 实现删除数据库表中重复数据仅保留一条SQL语句
  • 我在这里为大家介绍几种误删除数据库中重要数据的恢复方法(不考虑全库备份和利用归档日志)第一种数据恢复方法是利用oracle提供的闪回方法进行数据恢复,适用于delete删除一条记录)方式:首先需要知道是什么时间...
  • SQL语句删除数据库表中重复数据

    千次阅读 2016-03-23 10:22:05
    用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people...
  • delete from tab_order where id not in ( select t.max_id from ...本语句是以 订单号:order_no为查询条件,删除订单号重读的数据,保留最新的一条,可做参考修改语句,别copy,直接copy用不了的。 ...
  • 删除数据库中重复的数据!! 详细SQL语句....
  • 用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢
  • 在web_hk_roadway数据表中根据ROADWAY_CODE查询ROADWAY_NAME得时候发现个code查询出来了多name,因此决定首先对数据表中ROADWAY_CODE和ROADWAY_NAME一致的数据进行去重处理,下面是去重成功的语句 DELETE FROM ...
  • 1.首先在数据库连接URL上加上allowMultiQueries=true,默认mysql是不支持次执行多SQL语句的。 jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true ...
  • 平时工作中可以用到的,将关联的表中的数据,用一条语句删除,节省数据库链接资源
  • 面试题:在MySQL中,表格中不存在PK字段,一条SQL删除表中重复的数据,只保留一条。 1.创建表格 create table test( name varhcar(32), age Integer, gender varchar(8) ); 2.插入数据 insert into test(name,...
  • 毫秒级删除MySQL数据库百万条数据

    千次阅读 2018-11-26 09:58:31
    最近遇到了清理历史数据的需求,需要去清楚数据库中的数据,但是DBA对数据库删除任务做了各种限制,比如个事务的连接不能超过60s,不加事务的操作不能超过120s。也就是说大概百万级的数据需要在60s内全部删除。 ...
  • 一条语句删除重复数据:可考虑利用 rowId 、max(rowId)... ... ... ... 2)通过唯一rowid实现删除重复记录.在Oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,rowid确定了...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,525
精华内容 610
关键字:

数据库删除一条数据语句