如何用SQL查询一个表中某几个列相同的数据?

ID Name Age Class
1 AA 20 A-1
2 BB 20 A-1
3 CC 20 A-2
4 AA 20 A-1
5 BB 20 A-1
6 DD 21 A-3

由于错误输入,导致某几条数据完全重复(Name|Age|Class),请问有什么办法可以知道哪些数据重复了?如何把重复的数据删掉?

第1个回答  2007-08-09
删除数据库中重复数据的几个方法
数据库的使用过程中由于程序方面的问题有时候会碰到重复数据,重复数据导致了数据库部分设置不能正确设置……

方法一
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)本回答被网友采纳

用sql语句统计数据库某个字段中相同的数据有多少条?
1、要统计数据库中某个字段中相同数据的条数,可以使用SQL的分组和聚合功能。具体的SQL语句如下:```sql SELECT a, COUNT(*)FROM A GROUP BY a;```这里,字段a被视为分组依据,相同值的a会被分到同一组中,COUNT(*)函数则用于计算每组中的记录数。2、在SQL查询中,使用`GROUP BY`语句可以对...

怎么利用SQL语句查询数据库中具体某个字段的重复行
1、创建表插入数据:create table test(id int,name varchar(10))insert into test values (1,'张三')insert into test values (2,'李四')insert into test values (3,'张三')insert into test values (4,'王五')insert into test values (5,'赵六')其中name是张三的有两行,也就是重复行...

一个表中有重复记录如何用SQL语句查询出来?
SQL重复记录查询方法:1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from peoplewhere peopleId in (select peopleId from people group by peopleId having count (peopleId) > 1)2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,...

sql查询语句,怎样查询重复数据
查询重复数据的SQL语句可以通过使用GROUP BY和HAVING子句来实现。使用GROUP BY和HAVING查询重复数据 1. GROUP BY子句的作用:GROUP BY子句用于将来自多个记录的数据按照一个或多个列进行分组。当我们想要基于某些列的值来查看数据的重复情况时,GROUP BY是非常有用的。2. 结合聚合函数使用:为了识别重复数...

SQL哪个语句可以进行查询同一个表里的4个列的值是一样的?
楼上的是模糊查找 应该不是楼主要的答案吧 不应该用 like 吧 应该这样吧 如果要是知道值的话 把李四换成你知道的值 select * from A where a1 = '李四' and a2= '李四' and a3 = '李四' and a4 = '李四'如果不知道值的话只知道他们是相等的用这个 select * from aa where a=a1 ...

SQL 语句查询同一字段中重复的2个以上同时存在的数据
要查询SQL中同一字段中出现重复的两个或以上数据,您可以使用GROUP BY语句结合HAVING子句。以下是一个示例SQL查询,它针对"收费项目正让名梁盯称"字段,找出在'tab'表中出现次数大于等于2的项目:SELECT 收费项目正让名梁盯称, COUNT(*)FROM tab GROUP BY 收费项目正让名梁盯称 HAVING COUNT(*) >...

用sql语句怎么求 一个表T中 字段A,和字段B数据都相同的 数据。
把表名换成你的表 select t1.from 表名 t1,(select a,b from 表名 group by a,b having(count(*)>1)) t2 where t1.a=t2.a and t1.b=t2.b;

用sql语句查询某表中拥有多个相同字段中的一个值
用sql语句查询某表中拥有多个相同字段中的一个值1、对自己的表操作select a.* from hdzx_question a where a.c_id=(select top 1 c_id from hdzx_question where c_title=a.c_title and substring(c_content,0,7000)=substring(a.c_content,0,7000)) (注:c_content是text类型)...

sql语句如何查询一个表中某一列的相同数据?
其中:SELECT 语句:SELECT 语句用于从表中选取数据。结果被存储在一个结果表中(称为结果集)。WHERE 子句:如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。GROUP BY 语句:GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。HAVING 子句:在 SQL 中增加 HAVING ...

sql查找某一字段相同的所有数据
1、在我们的电脑上打开数据库,这里新建一张含有重复数据的user表做示例。2、我们输入“select * from user where name in (select name from user group by name having count(name) > 1) ”sql语句,点击运行可以看到查询出了数据库中user表的重复数据。3、通过“delete from user where name...

相似回答