根据列的重复值检索行

Retrieve rows on the basis of repeating value of a column

我想从我的 table Card.

中检索数据
table Card(
  MembershipNumber,
  EmbossLine,
  status,
  EmbossName
)

这样只有那些具有重复 MembershipNumber 即 count 大于 1 的行才应该被 returned。 就像我有以下记录

(11,0321,'active','John')
(11,0322,'active','John')
(23,0350,'active','Mary')
(46,0383,'active','Fudge')
(46,0382,'active','Fudge')
(46,0381,'active','Fudge')

查询应该 return 除第三条记录外的所有记录。可能吗?

已编辑 我得到了问题的答案。我还有一个问题。我也想按 status 过滤行,但是当我 运行 以下查询时,我没有得到想要的结果:

SELECT EmbossLine,Membershipnumber,status,embossname,*
FROM   (SELECT *,
               Count(MembershipNumber)OVER(partition BY EmbossName) AS cnt
        FROM   card) A
WHERE cnt > 1 AND status='E0'

在 where 子句中添加 status 之前,它工作得很好。见图

添加状态过滤后

SELECT * FROM CARD a WHERE
(SELECT COUNT(*) FROM CARD b WHERE b.MembershipNumber = a.MembershipNumber) > 1

应该做

使用 Count() Over() window 函数来执行此操作。

SELECT *
FROM   (SELECT *,
               Count(MembershipNumber)OVER(partition BY EmbossName) AS cnt
        FROM   youurtable) A
WHERE  cnt > 1 

演示

SELECT MembershipNumber,
       [status],
       EmbossName
FROM   (SELECT *,
               Count(MembershipNumber)OVER(partition BY EmbossName) AS cnt
        FROM   (VALUES (11.0321,'active','John'),
                       (11.0322,'active','John'),
                       (23.0350,'active','Mary'),
                       (46.0383,'active','Fudge'),
                       (46.0382,'active','Fudge'),
                       (46.0381,'active','Fudge')) tc (MembershipNumber, [status], EmbossName)) A
WHERE  cnt > 1 
Select c.* from card c
join (select MembershipNumber from table group by
        MembershipNumber having count(MembershipNumber) > 1) mem
on mem.MembershipNumber = c.MembershipNumber

或者

Select * from table where MembershipNumber in
(select MembershipNumber from table group by
        MembershipNumber having count(MembershipNumber) > 1)

在 empbossname 上查找重复项并得到结果

select t1.* from card as t1 inner join 
(select empbossname from card group by empbossname  having count(*)>1) as t2
on t1.empbossname =t2.empbossname