如何获得重复X次或更多次的行?

时间:2015-07-30 08:02:24

标签: php mysql

我有一个包含一些数据的表。我有一个'用户名'我的表中存储用户用户名的字段。

在此表中,用户可能有很多记录。

现在,我怎样才能让用户的用户名重复超过X次? (例如50次或更多?) 之后我想删除我在上一步中获得的每个用户的行,但是我需要保留前X行,我需要删除每个用户的第X行之后的所有行。

我怎么能用mysql和php做到这一点?

更新:我解决了我的问题:

SELECT username, count(*) as numRecords
FROM table
GROUP BY username

2 个答案:

答案 0 :(得分:1)

这需要采取一系列措施才能实现......

首先构建一个查询来计算每个用户的记录数

SELECT username, count(*) as numRecords
FROM table
GROUP BY username

然后添加:

HAVING numRecords > 5

缩小到超过5条记录的用户名..

循环上面查询中的记录..

foreach($results as $result){

    // Query db using `username` to get the 'record to keep'
    "SELECT * FROM table 
     WHERE username = $result['username']
     ORDER BY someUniqueID
     LIMIT 1"

    __Execute the query__

    __Store the record ID to keep__

   // Delete records (except the one to keep)
   "DELETE FROM table
    WHERE username = $result['username']
    AND someUniqueID != $someUniqueID"

    __Execute the query__

}

答案 1 :(得分:0)

SELECT DISTINCT `username`, COUNT(`username`) AS `numRecords`
FROM `table`
GROUP BY `username`
HAVING `numRecords` > 'someNumber'