比如现在有一人员表 (表名:peosons)若想将姓名、身份证号、住址这三个字段完全相同的记录查询出来
select p1.* from persons p1,persons p2 where p1.id<>p2.id and p1.cardid = p2.cardid and p1.pname = p2.pname and p1.address = p2.address
可以实现上述效果.
查询同一表内多字段同时重复记录的SQL语句
标签:where 身份证 sql sel 重复 重复记录 select res 完全
小编还为您整理了以下内容,可能对您也有帮助:
一个表中有重复记录如何用SQL语句查询出来?
select * from tablename where 重复字段1 in (select 重复字段1 from tablename group by 重复字段1,重复字段2 having count(*)>1)。
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
在PL/SQL中,查找表中多条重复记录(多个字段重复,有一个字段不重复)
做了一个简单的例子:
select c1, WMSYS.WM_CONCAT(c2)
from (select 1 as c1, 2 c2
from al
union all
select 1, 3 c2 from al)
group by c1
那你的问题可以这样:
select id,序列号,名称,位置,WMSYS.WM_CONCAT(端口)
from 表
group by id,序列号,名称,位置
这样就可以了,WMSYS.WM_CONCAT这个是类似字符串聚合函数的东东,一个缺点是重复记录不能太多.不然这个东西会放不下.(好像是varchar2(4000)的长度以内,这个东西也可以自己重写的,就没有这方面的了)
如果你的版本不支持的话,可以再聊,或者找下相关资料也可以.
希望对你有所帮助,祝你好运~~追问刚开始运行的时候报not a single-group group function错误,后来找到原因了,所有字段都要group by ,非常感谢
SQL 中同一个表中有多个字段有重复值,该如何筛选
oracle select * from 表名 where rowid in(select distinct rowid, count(1) over(partition by 可能存在重复值的字段) from 表名 where count(1) over(partition by 可能存在重复值的字段) > 1)
如何用SQL查询一个表中某几个列相同的数据?
删除数据库中重复数据的几个方法
数据库的使用过程中由于程序方面的问题有时候会碰到重复数据,重复数据导致了数据库部分设置不能正确设置……
方法一
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查询一个表中某几个列相同的数据?
删除数据库中重复数据的几个方法
数据库的使用过程中由于程序方面的问题有时候会碰到重复数据,重复数据导致了数据库部分设置不能正确设置……
方法一
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语句查询数据库重复记录24
方法如下:
select * from 你的表名
a where id=(select min(id) from 你的表名 whereitem_id=a.item_id)
在查询之前先把数据库表中的第一行复制到sid里在去,然后让sid和下面的每一行进行比较
取所有相同的行的最小的一下,也可以取最大的,结果是一样的。
这样让所有的行都比较不就得到不重复的数据了。
如何用一条SQL语句查询数据库重复记录24
方法如下:
select * from 你的表名
a where id=(select min(id) from 你的表名 whereitem_id=a.item_id)
在查询之前先把数据库表中的第一行复制到sid里在去,然后让sid和下面的每一行进行比较
取所有相同的行的最小的一下,也可以取最大的,结果是一样的。
这样让所有的行都比较不就得到不重复的数据了。
sql查询同一表内所有字段重叠数据,比如:第一行9999999;第二行00000;第九十行为111,查询出来!
CREATE TABLE #tb
( id INT)
INSERT INTO #tb VALUES(9999),(123456),(121),(5555),(999),(0000)
SELECT * FROM #tb WHERE id%REPLICATE(1,LEN(id)) =0
sql语句,在同一张表中筛选出重复的行 至少 2个字段都是重复的行,这个语句应该怎么写?
SELECT t.* FROM 表1 t1
INNER JOIN
(
select
字段1,字段2
from 表1
group by 字段1,字段2
having count(字段1)>1
) t2
ON t1.字段1=t2.字段1
AND t1.字段2=t2.字段2追问
这个我试了一下 ,貌似不行哈?、、就是类似上图的表 我是想找出 有没有重复的行(列0 和列1 都同时重复) 或者是 找出 列0 和列1 都不同时重复的行、 谢谢了 朋友 能不能写的具体点 新手~~~