我需要找到在我的数据库中获得奖金的用户。我唯一感兴趣的用户,是那些多次获得奖金的用户。
我应该如何处理此查询以仅获取获得多次奖金的用户?

select Bonus, BonusUser, BonusType, Amount
from Bonus
where BonusType="1"
order by BonusUser asc;

我需要一个提示所有“重复”行的查询,这样我就可以从中删除奖金。
我之前没有解释过,但是有些用户利用了一个bug,可以获得免费的奖金,所以我必须选择那些重复的行,分析并删除如果是滥用情况。

最佳答案

添加aGROUP BY和aHAVING子句

SELECT Bonus
    , BonusUser
    , BonusType
    , Ammount
FROM Bonus
WHERE BonusType="1"
GROUP BY BonusUser
HAVING Count(*) > 1
ORDER BY BonusUser asc;

根据您的评论,我认为这是您想要的,这将为您提供所有有奖金的用户的列表,但它将为您提供有一个以上奖金的用户的计数:
SELECT Bonus
    , t.BonusUser
    , BonusType
    , amount
    , t2.cntbonus
FROM Bonus t
inner join
(
    select count(*) as CntBonus, bonususer
    from Bonus
    where BonusType='1'
    group by bonususer
) t2
    on t.bonususer = t2.bonususer
WHERE BonusType='1'
ORDER BY BonusUser asc

09-30 22:54