怎么查看数据库表中某个字段的值都有哪些重复记录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么查看数据库表中某个字段的值都有哪些重复记录相关的知识,希望对你有一定的参考价值。

如题:
表A中包含a b c 三个字段,共有10行记录,怎么查询10行记录中字段b的值是否有重复。 重复的记录分别是哪几行?

下面以 sqlserver数据库为例进行说明。

select * from TableA where b in (select  b from  TableA group  by  b having  count(b) > 1)

这样就列举出了b字段所有的重复数据,可以根据对应的行号,取得位于第几行。

如果要查询a字段或者c字段重复数据,可以相应的把上面的b字段替换成a字段或c字段即可。

举例:

1、创建表student

2、查询语句: select * from student where name in (select  name from  student group  by  name   having  count(name ) > 1)

这样就查出名字重复列,以及行号id。

扩展资料:

1. sqlserver其他相关的一些查询:

(1)删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录

delete from people where peopleId in 

(select   peopleId from people group by   peopleId   having count(peopleId) > 1) and 

rowid not in (select min(rowid) from   people group by peopleId having count(peopleId)>1)

(2)查找表中多余的重复记录(多个字段) 

select * from vitae a where (a.peopleId,a.seq) in  

(select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)

(3)查找表中多余的重复记录(多个字段),不包含rowid最小的记录

select * from vitae a where (a.peopleId,a.seq)  in  

(select peopleId,seq from vitae group by peopleId,seq havingcount(*) > 1) and 

rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

2. SQL语言元素

1、子句,是语句和查询的组成部分。

2、表达式,可以生成标量值,也可以生成由列和行数据组成的表。

3、谓词,指定可以评估为SQL三值逻辑(3VL)(真/假/未知)或布尔真值的条件,用于限制语句和查询的效果,或用于更改程序流。

4、查询,根据特定条件检索数据。这是SQL的一个重要元素。

语句可能对架构和数据产生持久影响,或者可能控制事务,程序流,连接,会话或诊断。

SQL语句还包括分号(“;”)语句终止符。虽然并非每个平台都需要,但它被定义为SQL语法的标准部分。在SQL语句和查询中通常会忽略无关紧要的空格,从而可以更轻松地格式化SQL代码以提高可读性。

参考资料:百度百科-SQL语法



参考技术A

查看可用如下方法:

1、创建测试表,插入数据:

create table product
(id int,
name varchar(10),
totol int)

insert into product values (1,'香蕉',100)
insert into product values (2,'橘子',67)
insert into product values (3,'葡萄',89)
insert into product values (4,'苹果',235)
insert into product values (5,'香蕉',77)
insert into product values (6,'芒果',34)
insert into product values (7,'葡萄',78)
insert into product values (8,'梨',24)

表中数据如:

2、如果查询name列有重复的数据,可执行sql语句:

select * from product where name in (select name from product group by name having COUNT(*)>1)

说明:查询的结果就是香蕉和葡萄在表中是有重复的,要把香蕉和葡萄的所有记录都查询出来,结果如图:

参考技术B 如果xin表的ID是自增列,则insert
into
xin(ENAME,
SNAME,
NEWNUM)select
MIN(ENAME)
AS
ENAME,
SNAME,
count(*)
AS
NEWNUM
from
jie
group
by
SNAME只要在asp代码中执行这个sql语句就可以了
参考技术C select * from 表 where b in (select b from 表 group by b having count(*)>1)

以上,希望对你有所帮助!本回答被提问者采纳

主键和外键


如果一个表中有两条记录各个字段的值都相同,那么这两条记录就是重复的

为了让表中的记录不重复,可以为表设置主键

主键:
    主键是对一张表而言
    1、可以有一个字段或多个字段组成,多个字段组成的叫复合主键
    2、数据库表中任意两条记录的主键是不相等的,这样就能保证记录不重复
    
    例如:一般将表中第一个字段id设置为主键,并且让他自动增长,就是在插入一条
          新数据时自动增加,这就保证表中任意两条记录的id是不同的,就不会存在重复记录
          
    复合主键:把表中的多个字段看成一个主键
    
外键:
    外键是对两张表而言,主键和外键分布在两张表中,先有主键才能有外键,外键以主键为参照
    例如:有一张表A,主键为id
          另一张表B,B中有一个字段为a_id
          为了将表A中的记录与表B中的某一条记录关联起来
          就将表A中的记录的id存放到表B的记录的a_id中
          这样B表中的这条记录就与A表中的这条记录关联起来了
          称B表的a_id字段称为表B的外键,关联的主键是表A的id字段
          
简单来说就是

主键能区分同一张表中的不同记录,能防止表中存在重复记录,主键不能为空,保证数据库中不会有全部为空的数据记录

外键首先可以关联两张表的数据,将复杂的数据分开存放到多张表,不至于将所有数据都放在一张表里面
另外外键可以用来管理两张表中的记录的,可以保证数据的完整性
设置的外键之后,两张表中管理起来的数据不能随便删除,
比如:有两张表,用户表和性别表
        性别表sex中有两条记录 

id text
1
2

    用户表user

id name sex_id
001 jim 1
002 tom 2
003 bob 1

    user表中的sex_id是外键,关联的主键是sex表的主键id

     那么主键存在的表sex表中的数据就不能随便删除

  因为如果删除   1   男  这条数据,在查询jim和bob的性别的时候就会出错

  要删除   1  男 这条数据,必须先删除  jim 和  bob这两条数据

以上是关于怎么查看数据库表中某个字段的值都有哪些重复记录的主要内容,如果未能解决你的问题,请参考以下文章

如何查询一个oracle数据库中所有表的所有字段哪个包含特定字符串?

sql查看一张表中某个字段是不是存在??怎么写啊

在oracle数据库如何查询某个字段在哪些表中出现过

在oracle中怎么查一个表中的的一个字段的重复数据

怎么根据一个表的字段值修改另一个表的字段值

如何根据某个字段从数据库表中删除重复项