62,074
社区成员
发帖
与我相关
我的任务
分享
--a
SELECT * FROM member a
WHERE EXISTS(SELECT 1 FROM member GROUP BY namea,age
WHERE namea=a.namea AND age=a.age
GROUP BY namea,age
HAVING COUNT(*)>1
)
--b
SELECT * FROM member a
WHERE EXISTS(SELECT 1 FROM member GROUP BY namea,age
WHERE CHECKSUM(namea,age)=CHECKSUM(a.namea,a.age)
GROUP BY namea,age
HAVING COUNT(*)>1
)
--c
SELECT * FROM member
WHERE CHECKSUM(namea,age) IN
(
SELECT CHECKSUM(namea,age) FROM member GROUP BY namea,age
GROUP BY namea,age
HAVING COUNT(*)>1
)
--d
SELECT * FROM member
WHERE RTRIM(namea) + ',' + RTRIM(age) IN
(
SELECT RTRIM(namea) + ',' + RTRIM(age) FROM member GROUP BY namea,age
GROUP BY namea,age
HAVING COUNT(*)>1
)
--e
SELECT a.* FROM member a
INNER JOIN
(
SELECT CHECKSUM(namea,age) cm FROM member GROUP BY namea,age
GROUP BY namea,age
HAVING COUNT(*)>1
) b
ON CHECKSUM(namea,age)=cm
--f
SELECT a.* FROM member a
INNER JOIN
(
SELECT namea,age FROM member GROUP BY namea,age
GROUP BY namea,age
HAVING COUNT(*)>1
) b
ON a.namea=b.namea AND a.age=b.age
--g
SELECT a.* FROM member a
INNER JION
(
SELECT RTRIM(namea) + ',' + RTRIM(age) nameAge FROM member GROUP BY namea,age
GROUP BY namea,age
HAVING COUNT(*)>1
) b
ON RTRIM(namea) + ',' + RTRIM(age)=nameAge
select * from member a where exists(select 1 from member where nameA=a.nameA and age=a.age group by nameA,age having count(*)>1)
select autoId+1 as newAutoId,* into #temp from member --这里假设你的member表里已经有一个自增字段
--如果没有自增字段 将上句改为 select identity(int,1,1) as newAutoId,* into #temp from member
select min(newAutoId) as newAutoId into #temp2 from #temp group by nameA,age having count(*)>1
select * from #temp a,#temp2 b where a.newAutoId=b.newAutoId --这里选中的是重复行的每一条记录 多了一列newAutoId 当然你可将其过滤掉。
--然后就可以按你的要求写自已的sql了 这里会了吧
drop table #temp
drop table #temp2
select * from tableA a
where (a.nameA,a.sex) in (select nameA,sex from tableA group by nameA,sex having count(*) > 1)
select * from member a
where a.nameA in (select nameA from member group by nameA having count(*) > 1) and a.age in(select age from member group by age having count(*) > 1)