首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求一条取重复记录的SQL语句解决方法

2012-01-08 
求一条取重复记录的SQL语句ABNAME23001330023400334004查出以下的结果A+B做为条件只要记录中A+B的值有重复

求一条取重复记录的SQL语句
A                   B                 NAME
23   001
33   002
34   003
34   004
查出以下的结果
A+B   做为条件
只要记录中     A+B   的值   有重复的   就查出
但   单独的A重复或B重复则不查出来
如下    
A                   B                 NAME
34   003
34   004



[解决办法]
create table T(A int, B int, Name char(3))

insert T select2,3, '001 '
union all select 3,3, '002 '
union all select 3,4, '003 '
union all select 3,4, '004 '

select a.* from T a
inner join
(
select A,B from T
group by A, B
having count(*)> 1
) b on a.A=b.A and a.B=b.B

--result
A B Name
----------- ----------- ----
3 4 003
3 4 004

(2 row(s) affected)

[解决办法]
create table tab
(
A varchar(10),
B varchar(20),
NAME varchar(20)
)
insert into tab select '2 ', '4 ', '10 '
insert into tab select '3 ', '4 ', '20 '
insert into tab select '3 ', '5 ', '40 '
insert into tab select '3 ', '5 ', '60 '

select a.*
from tab a ,(select A,B from tab group by A, B having count(1)> 1) b
where a.A=b.A and a.B=b.B

[解决办法]
select * from table t where exists(select 1 from table where name <> t.name and a+b=t.a+t.b)
[解决办法]
declare @ta table(A int, B int, NAME varchar(5))
insert @ta
select 2,3, '001 '
union all select 3,3, '002 '
union all select 3,4, '003 '
union all select 3,4, '004 '

select * from @ta a
where (select count(1) from @ta where a=a.a and b=a.b)> 1

(所影响的行数为 4 行)

A B NAME
----------- ----------- -----
3 4 003
3 4 004

(所影响的行数为 2 行)


[解决办法]
select * from table t where exists(select 1 from table where name <> t.name and a=t.a and b = t.b)

热点排行