使用count 和distinct(去重)关键字可以查看数据库某列是否有重复项。例如:
select count(discinct(colunmname)) from table_name;
如果上述查询统计结果大于count(colunmname),则代表这一列有重复项。
(1)sql如何查表中的重复内容扩展阅读
SQL SELECT DISTINCT 语句用法介绍:
在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。
关键词 DISTINCT 用于返回唯一不同的值。
语法:
SELECT DISTINCT 列名称 FROM 表名称
使用 DISTINCT 关键词,例如要从 "Company" 列中选取所有的值,我们需要使用 SELECT 语句:
SELECT Company FROM Orders
Ⅱ sql查找某一字段相同的所有数据
1、在我们的电脑上打开数据库,这里新建一张含有重复数据的user表做示例。
Ⅲ 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 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)
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)
(二)
比方说
在A表中存在一个字段“name”,
而且不同记录之间的“name”值有可能会相同,
现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;
Select Name,Count(*) From A Group By Name Having Count(*) > 1
如果还查性别也相同大则如下:
Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1
(三)
方法一
declare @max integer,@id integer
declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having
count(*) >; 1
open cur_rows
fetch cur_rows into @id,@max
while @@fetch_status=0
begin
select @max = @max -1
set rowcount @max
delete from 表名 where 主字段 = @id
fetch cur_rows into @id,@max
end
close cur_rows
set rowcount 0
方法二
有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,
二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
1、对于第一种重复,比较容易解决,使用
select distinct * from tableName
就可以得到无重复记录的结果集。
如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp
发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。
2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下
假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集
select identity(int,1,1) as autoID, * into #Tmp from tableName
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
select * from #Tmp where autoID in(select autoID from #tmp2)
最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写
在select子句中省去此列)
(四)查询重复
select * from tablename
where id in (select id from tablename group by id having count(id) > 1)
(五)另一个经典方法 删除字段filed重复的
SELECT min(ID) as id into #TBA FROM table group by filed order by id
delete from table where id not in (select id from #TBA)
求采用,个人精髓!
Ⅳ 用SQL查询两个表中相同的数据
1、创建测试表;
create table test_col_1(id number, var varchar2(200));
create table test_col_2(id number, var varchar2(200));
Ⅳ sql查询两个表相同的数据
SQL语句如下:
SELECT * from TABLE1
full join TABLE2 on TABLE1.xingming = TABLE2.xingming
where
TABLE1.xingming is null or TABLE2.xingming is null
分析:
1、首先得出两个表的并集
从结果中可以看出,表1中的赵二在表2中没有相同xingming的记录。
表2中的刘六在表1中没有相同xingming的记录。
本题还有其它多种解法,此处列出比较好理解的一种。
(5)sql如何查表中的重复内容扩展阅读:
使用自联接
即使表在数据库中没有自反关系,也可将它与自身联接。 例如,可使用自联接查找生活在同一城市的作者对。
与任何联接一样,自联接至少需要两个表。 不同之处在于,不是向查询中添加第二个表,而是添加同一个表的第二个实例。 这样,可将表的第一个实例中的列与第二个实例中的同一列相比较,这样可相互比较列中的值。查询和视图设计器为表的第二个实例分配一个别名。
例如,如果要创建自联接来查找居住在 Berkeley 内的所有作者对,可将表的第一个实例中的 city 列与第二个实例中的 city 列相比较。 所得到的查询可能类似于:
SELECT
authors.au_fname, authors.au_lname, authors1.au_fname AS Expr2, authors1.au_lname AS Expr3
FROM authors INNER JOIN authors authors1 ON authors.city = authors1.city
WHERE
authors.city = 'Berkeley'
参考资料:
网络.full join
Ⅵ 如何用一条SQL语句查询数据库重复记录
方法如下:
select
*
from
你的表名
a
where
id=(select
min(id)
from
你的表名
whereitem_id=a.item_id)
在查询之前先把数据库表中的第一行复制到sid里在去,然后让sid和下面的每一行进行比较
取所有相同的行的最小的一下,也可以取最大的,结果是一样的。
这样让所有的行都比较不就得到不重复的数据了。
Ⅶ sql语句如何查询一个表中某一列的相同数据
假设表名是num,列名是a,则查询语句为:
SELECT * FROM num WHERE a IN(
SELECT a FROM num GROUP BY a HAVING COUNT(a)>1
)
其中:
SELECT 语句:SELECT 语句用于从表中选取数据。结果被存储在一个结果表中(称为结果集)。
WHERE 子句:如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。
GROUP BY 语句:GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。
HAVING 子句:在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。
COUNT() 函数:返回匹配指定条件的行数。
(7)sql如何查表中的重复内容扩展阅读:
sql语言特点:
1、一体化:SQL集数据定义DDL、数据操纵DML和数据控制DCL于一体,可以完成数据库中的全部工作。
2、使用方式灵活:它具有两种使用方式,即可以直接以命令方式交互使用;也可以嵌入使用,嵌入到C、C++、FORTRAN、COBOL、JAVA等主语言中使用。
3、非过程化:只提操作要求,不必描述操作步骤,也不需要导航。使用时只需要告诉计算机“做什么”,而不需要告诉它“怎么做”。
4、语言简洁,语法简单,好学好用:在ANSI标准中,只包含了94个英文单词,核心功能只用6个动词,语法接近英语口语。
Ⅷ sql 怎么查看一张表里面是否有两条相同的数据
太多人不懂装懂了,看不下去,给你一些参考吧:
先假设你判断两条记录是不是重复的条件是A、B、C、D、E五个字段都完全相同视为重复数据。
Ok,具体的SQL如下:
Select
A,
B,
C,
D,
E,
COUNT(*)
as 记录条数
From
表1
Group
By
A,
B,
C,
D,
E
Having
COUNT(*)
>
1
说明:根据你要视为重复的这些字段来做分组,统计这些字段的内容都完全相同的记录条数,然后使用
Having
COUNT(*)
>
1
取出其中统计的条数大于1的即表示有重复2条记录以上的记录。
但是,如果你需要找出包含这些重复数据的的明细记录到底有哪些,你可以考虑下面的进一步联合查询:
Select
*
From
表1
as
X
Inner
Join
(Select
A,
B,
C,
D,
E,
COUNT(*)
as
记录条数
From
表1
Group
By
A,
B,
C,
D,
E
Having
COUNT(*)
>
1)
as
Y
ON
X.A
=
Y.A
and
X.B
=
Y.B
and
X.C
=
Y.C
and
X.D
=
Y.D
and
X.E
=
Y.E
Ⅸ 怎样在SQL查询一个表中重复的名字
总结:
两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
1、(1)对于第一种重复,比较容易解决,使用复制代码代码如下:select distinct * from tableName
(2)如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除,复制代码代码如下:
select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp
2、假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集,复制代码代码如下:
select identity(int,1,1) as autoID, * into #Tmp from tableName
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
select * from #Tmp where autoID in(select autoID from #tmp2)