精华内容
下载资源
问答
  • 一、查询某个字段所在的表名 select [name] from [库名].[dbo].sysobjects where id in(select id from [库名]....有时候为了对数据进行简单备份,需要在数据库中新建历史表来保留以前的数据我们可以通过left join ...

     一、查询某个字段所在的表名

    select [name] from [库名].[dbo].sysobjects where id in(select id from [库名].[dbo].syscolumns Where name='字段名') 

    二、sqlserver 防止重复插入数据

    有时候为了对数据进行简单备份,需要在数据库中新建历史表来保留以前的数据我们可以通过left join 来进行数据的筛选

    格式:

    select t1.*
    
    from 数据来源表 t1 left join 需要插入的表 t2 on t1.主键=t2.主键
    
    where t2.主键 is null

    为了更好的说明在这里举个栗子

    数据来源表  UserMappings (数据+结构)

    需要插入的表  HisUserMappings (数据+结构)

     

    代码:

    select t1.*
    from   UserMappings    t1 left join HisUserMappings   t2 on  t1.UserName=t2.UserName
    where t2.UserName is null
    

    查询结果:

    这里筛选出的数据就是所要插入的数据

     

    展开全文
  • 在一张表某个字段下面有重复记录,有很多方法,但是有一个方法,是比较高效,如下语句:select data_guid from adam_entity_datas a where a.rowid > (select min(b.rowid) from adam_entity_datas b where b....

    在一张表中某个字段下面有重复记录,有很多方法,但是有一个方法,是比较高效的,如下语句:

    select data_guid from adam_entity_datas a where a.rowid > (select min(b.rowid) from adam_entity_datas b where b.data_guid = a.data_guid)

    如果表中有大量数据,但是重复数据比较少,那么可以用下面的语句提高效率

    select data_guid from adam_entity_datas where data_guid in (select data_guid from adam_entity_datas group by data_guid having count(*) > 1)

    此方法查询出所有重复记录了,也就是说,只要是重复的就选出来,下面的语句也许更高效

    select data_guid from adam_entity_datas where rowid in (select rid from (select rowid rid,row_number()over(partition by data_guid order by rowid) m from adam_entity_datas) where m <> 1)

    目前只知道这三种比较有效的方法。

    第一种方法比较好理解,但是最慢,第二种方法最快,但是选出来的记录是所有重复的记录,而不是一个重复记录的列表,第三种方法,我认为最好。

     
    展开全文
  • 我们可能会出现这种情况,某个表原来设计...一、对于部分字段重复数据的删除先来谈谈如何查询重复的数据吧。下面语句可以查询出那些数据是重复的:select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having

    我们可能会出现这种情况,某个表原来设计不周全,导致表里面的数据数据重复,那么,如何对重复的数据进行删除呢?
    重复的数据可能有这样两种情况,第一种时表中只有某些字段一样,第二种是两行记录完全一样。
    一、对于部分字段重复数据的删除
    先来谈谈如何查询重复的数据吧。
    下面语句可以查询出那些数据是重复的:
    select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having count(*) > 1如下:select userid,userdisplayname,count(*) from ideal_oa.run_trace group by userid,userdisplayname having count(*) > 1

    将上面的>号改为=号就可以查询出没有重复的数据了。想要删除这些重复的数据,可以使用下面语句进行删除
    delete from 表名 a where 字段1,字段2 in
    (select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having count(*) > 1)
    上面的语句非常简单,就是将查询到的数据删除掉。不过这种删除执行的效率非常低,对于大数据量来说,可能会将数据库吊死。所以我建议先将查询到的重复的数据插入到一个临时表中,然后对进行删除,这样,执行删除的时候就不用再进行一次查询了。如下:
    CREATE TABLE 临时表 AS
    (select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having count(*) > 1)
    上面这句话就是建立了临时表,并将查询到的数据插入其中。下面就可以进行这样的删除操作了:
    delete from 表名 a where 字段1,字段2 in (select 字段1,字段2 from 临时表);
    这种先建临时表再进行删除的操作要比直接用一条语句进行删除要高效得多。

    这个时候,大家可能会跳出来说,什么?你叫我们执行这种语句,那不是把所有重复的全都删除吗?而我们想保留重复数据中最新的一条记录啊!大家不要急,下面我就讲一下如何进行这种操作。在oracle中,有个隐藏了自动rowid,里面给每条记录一个唯一的rowid,我们如果想保留最新的一条记录,我们就可以利用这个字段,保留重复数据中rowid最大的一条记录就可以了。下面是查询重复数据的一个例子:
    select a.rowid,a.* from 表名 a
    where a.rowid !=
    (
    select max(b.rowid) from 表名 b
    where a.字段1 = b.字段1 and
    a.字段2 = b.字段2
    )
    下面我就来讲解一下,上面括号中的语句是查询出重复数据中rowid最大的一条记录。而外面就是查询出除了rowid最大之外的其他重复的数据了。由此,我们要删除重复数据,只保留最新的一条数据,就可以这样写了:
    delete from 表名 a
    where a.rowid !=
    (
    select max(b.rowid) from 表名 b
    where a.字段1 = b.字段1 and
    a.字段2 = b.字段2
    )

    随便说一下,上面语句的执行效率是很低的,可以考虑建立临时表,讲需要判断重复的字段、rowid插入临时表中,然后删除的时候在进行比较。
    create table 临时表 as
    select a.字段1,a.字段2,MAX(a.ROWID) dataid from 正式表 a GROUP BY a.字段1,a.字段2;
    delete from 表名 a
    where a.rowid !=
    (
    select b.dataid from 临时表 b
    where a.字段1 = b.字段1 and
    a.字段2 = b.字段2
    );
    commit;

    二、对于完全重复记录的删除

    对于表中两行记录完全一样的情况,可以用下面语句获取到去掉重复数据后的记录:
    select distinct * from 表名
    可以将查询的记录放到临时表中,然后再将原来的表记录删除,最后将临时表的数据导回原来的表中。如下:
    CREATE TABLE 临时表 AS (select distinct * from 表名);
    drop table 正式表;
    insert into 正式表 (select * from 临时表);
    drop table 临时表;

    如果想删除一个表的重复数据,可以先建一个临时表,将去掉重复数据后的数据导入到临时表,然后在从
    临时表将数据导入正式表中,如下:
    INSERT INTO t_table_bak
    select distinct * from t_table;

    展开全文
  • 教你删除Oracle数据库中重复没用的数据 一、删除部分字段重复数据 先来谈谈如何查询重复的数据吧。 下面语句可以查询出那些数据是重复的: select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having ...

     

    教你删除Oracle数据库中重复没用的数据

      一、删除部分字段重复数据

      先来谈谈如何查询重复的数据吧。

      下面语句可以查询出那些数据是重复的:

     

      select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having count(*) > 1

     

      将上面的>号改为=号就可以查询出没有重复的数据了。

      想要删除这些重复的数据,可以使用下面语句进行删除

     

      delete from 表名 a where 字段1,字段2 in

      (select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having count(*) > 1)

     

      上面的语句非常简单,就是将查询到的数据删除掉。不过这种删除执行的效率非常低,对于大数据量来说,可能会将数据库吊死。所以我建议先将查询到的重复的数据插入到一个暂时表中,然后对进行删除,这样,执行删除的时候就不用再进行一次查询了。如下:

     

      create TABLE 暂时表 AS

      (select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having count(*) > 1)

     

      上面这句话就是建立了暂时表,并将查询到的数据插入其中。

     

      下面就可以进行这样的删除操作了:

     

      delete from 表名 a where 字段1,字段2 in (select 字段1,字段2 from 暂时表);

     

      这种先建暂时表再进行删除的操作要比直接用一条语句进行删除要高效得多。

      这个时候,大家可能会跳出来说,什么?你叫我们执行这种语句,那不是把所有重复的全都删除吗?而我们想保留重复数据中最新的一条记录啊!大家不要急,下面我就讲一下如何进行这种操作。

      在oracle中,有个隐藏了自动rowid,里面给每条记录一个唯一的rowid,我们假如想保留最新的一条记录,

      我们就可以利用这个字段,保留重复数据中rowid最大的一条记录就可以了。

      下面是查询重复数据的一个例子:

      以下是引用片段:

      selecta.rowid,a.*from表名a

      wherea.rowid!=

      (

      selectmax(b.rowid)from表名b

      wherea.字段1=b.字段1and

      a.字段2=b.字段2

      )

      下面我就来讲解一下,上面括号中的语句是查询出重复数据中rowid最大的一条记录。

      而外面就是查询出除了rowid最大之外的其他重复的数据了。

      由此,我们要删除重复数据,只保留最新的一条数据,就可以这样写了:

      deletefrom表名a

      wherea.rowid!=

      (

      selectmax(b.rowid)from表名b

      wherea.字段1=b.字段1and

      a.字段2=b.字段2

      )

      随便说一下,上面语句的执行效率是很低的,可以考虑建立暂时表,讲需要判定重复的字段、rowid插入暂时表中,然后删除的时候在进行比较。

      createtable暂时表as

      selecta.字段1,a.字段2,MAX(a.ROWID)dataidfrom正式表aGROUPBYa.字段1,a.字段2;

      deletefrom表名a

      wherea.rowid!=

      (

      selectb.dataidfrom暂时表b

      wherea.字段1=b.字段1and

      a.字段2=b.字段2

      );

      commit;

     

    展开全文
  • 举例: 笔者编程时发现以前编的程序在SQL Server数据库中能正确查出要查的数据结果,当数据库变成ACCESS时查不出数据了,上网发现是ACCESS数据库不支持正则表达式,只能用模糊查询查出想要的数据。 同一条SQL语句在...
  • 我们可能会出现这种情况,某个表原来设计不周全,导致...一、对于部分字段重复数据的删除先来谈谈如何查询重复的数据吧。下面语句可以查询出那些数据是重复的: 代码: select 字段1,字段2,count(*) from 表名 grou...
  • 首先数据要求是存放在(Mdb)个人地理数据库中,如果不是,需要先导入进去。这是因为个人地理数据库对子查询支持更好。 如果这个字段名叫testField,表名叫testTable,SQL可类似如下写: [testField] in ...
  • Oracle数据库删除重复数据

    千次阅读 2018-09-04 00:01:49
    Oracle数据库中如何删除重复数据。 第一种情况:部分字段重复数据的删除 先查询出那些数据重复的: select 字段1 ,字段2 ,count(*) from 表名 group by 字段1 ,字段2 having count(*) &amp;gt...
  • 之前博客mysql数据库中删除重复的数据只保留一条中介绍的方法适用于有两条重复的数据 然后删除其中一条,保留一条,如果重复的数据较多(>2)时 就需要执行多次,重复的数据有3条 对应执行两次 依次类推,很显然...
  • ![图片说明](https://img-ask.csdn.net/upload/201805/09/1525869442_486618.png)A表有两个字段 id,bID. 其中bID,是b表的主键 B表有两个字段 id,bName. 问现在如何才查训条件...*B表的name,是可以出现重复的数据
  • 做insert操作时,可能在保存之前要判断用户输入某个数据是否在数据库中唯一存在,是否与其他数据重复。这里重点记录sql语句以及service如何实现。 1、错误示范 service层: selMap =commDAO.selectOne(KFSGL + &...
  • 消除数据库中重复

    2009-12-28 11:58:10
    我们可能会出现这种情况,某个表原来设计不周全,导致表里面的数据数据...一、对于部分字段重复数据的删除 先来谈谈如何查询重复的数据吧。 下面语句可以查询出那些数据是重复的: select 字段1,字段2,count(*) ...
  •  先来谈谈如何查询重复的数据吧。  下面语句可以查询出那些数据是重复的:  select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having count(*) &gt; 1  将上面的&gt;号改为=号就可以查询...
  • 据库 数据库开发应用 CSDN 推荐tag:记录 oracle中如何删除重复数据 我们可能会出现这种情况,某个表原来设计不周全,导致表里面的数据数据重复,...一、对于部分字段重复数据的删除 先来谈谈如何查询重复的数据吧。 
  • 结构可以理解为:类型 日期 备注nokia 20090214 aa nokia 20090215 bb nokia 20090225 cc nokia 20090218 dd LG 20090225 cc MOTO 20090218 dd 表中数据类型有可能重复,时间字段为:相同类型则不重复,不同类型...
  • 数据库内有很多字段,但是2个字段(id、mac_id)中任何一... 插入数据库之前,需要在数据库中查询,2个字段(id、mac_id)中任何一个都不在数据库记录中查询到时,才能将当前数据插入到数据库。 一、连接...
  • Mysql select 如何去除重复数据

    千次阅读 2019-05-26 11:27:05
    数据库进行数据查询的时候,由于查询条件不充分性,直接导致数据耦合 在这时,需要对数据进行一定处理 如何避免重复数据 首先可以使用distinct字段 在表,可能会包含重复值。这并不成问题,不过,有时您...
  • 可参考其他博主文章: ...2、Mysql数据库中查询重复数据和去重数据 , 删除重复数据的sql及分析 https://blog.csdn.net/zzzgd_666/article/details/80718139 3、ORACLE环境下-SQL查询和删除重复值 https://segmentfa
  • MySQL大表中重复字段的高效率查询方法MySQL 删除大表的性能问题解决方案MYSQL数据库中的现有表增加新字段(列)MySQL命令行中给表添加一个字段(字段名、是否为空、默认值)MySql创建带解释的表及给表和字段加注释的...
  • Oracle 如何查找并删除重复记录

    千次阅读 2020-08-24 13:50:23
    本文介绍如何在 Oracle 数据库中查找并删除重复记录,包括使用聚合函数加上子查询或者连接查询、使用分析函数等方法查找单个字段或者多个字段的重复数据,以及使用子查询中分析函数等方法实现重复数据的删除。
  • 查询出表1 在表2 的数据 1 a 1 c 2 c 3 c 现在想要向表2插入 表1表2没有的数据 也就是除了上面4条的其它数据 1 b 2 a 2 b 3 a 3 b 插入表2 应该如何查询 获得这些...
  • SQL重复记录查询_删除

    千次阅读 2019-05-05 17:11:01
    前言:查询重复,首先需要清楚什么是重复的数据,我们在数据库中如何定义记录为重复的!!! 在数据库中,一般是指两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录;二是部分关键字段重复的...
  • 我是用java从本地数据库中(oracle)提取数据后,封装,发送给远程服务器,然后远程服务器会返回发送结果代码。 我在主表中每条数据都有一个字段显示其发送次数,还有一个字段显示发送结果。再有一张结果表,...
  • 数据库设计在平时工作是必不可少,良好表设计可以让我们查询效率更高,加快网站访问速度,提升用户体验,并且方便于我们查询数据。下面就总结一下,如何设计出高可复用,优良表结构,从而在实际工作使...
  • 这是数据库中的表: 分组介绍: Select重复字段From表GroupBy重复字段HavingCount(*)>1 查看是否有重复的数据: GROUP BY <列名序列> HAVING <组条件表达式> 查询出:根据dname...
  • 并且,最终说来,产生价值的并不是绚丽的界面和现代化的输入方式,而是存放在数据库中的数据。不幸的是,虽然关系型数据库历经了约30年的发展,有成熟的理论和大量的实践基础,但是,大多数设计、开发人员在设计...
  • 并且,最终说来,产生价值的并不是绚丽的界面和现代化的输入方式,而是存放在数据库中的数据。不幸的是,虽然关系型数据库历经了约30年的发展,有成熟的理论和大量的实践基础,但是,大多数设计、开发人员在设计...
  • 做机房管理系统的时候,在数据库中没有添加主键约束,在添加了相同的数据以后,发现手动删除的时候,提示键列信息不足或不正确,无法删除数据.不论是多条选中还是单条选中,都是删除不了.感觉真的是很奇怪.后来查了一下...
  • 数据库系统实现

    2013-05-12 13:09:11
    3.4.2 具有重复字段的记录 3.4.3 变格式的记录 3.4.4 不能装入一个块的记录 3.4.5 BLOBS 习题 3.5 记录的修改 3.5.1 插入 3.5.2 删除 3.5.3 修改 习题 3.6 小结 3.7 参考文献 第4章 ...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 242
精华内容 96
关键字:

数据库中如何查询重复字段的数据