我有一个包含一些数据的表。我有一个'用户名'我的表中存储用户用户名的字段。
在此表中,用户可能有很多记录。
现在,我怎样才能让用户的用户名重复超过X次? (例如50次或更多?) 之后我想删除我在上一步中获得的每个用户的行,但是我需要保留前X行,我需要删除每个用户的第X行之后的所有行。
我怎么能用mysql和php做到这一点?
更新:我解决了我的问题:
SELECT username, count(*) as numRecords
FROM table
GROUP BY username
答案 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'