Mysql 选择每个组的最大行数
我有一个简单的用户记录表。一个电子邮件地址允许有多个条目。我现在想创建一个查询,返回所有记录,但将重复条目的数量限制为一个设置的数字,例如每个电子邮件地址5个 我将使用此查询的最终结果创建一个新表 我唯一的想法是使用PHP并选择一个唯一的电子邮件地址列表,然后我会在循环中使用此列表查询表并将其限制为5,但我的表中有大约65k个唯一的电子邮件,总记录约284k行 有没有一种方法可以在MySQL中实现这一点 下面是表格结构Mysql 选择每个组的最大行数,mysql,Mysql,我有一个简单的用户记录表。一个电子邮件地址允许有多个条目。我现在想创建一个查询,返回所有记录,但将重复条目的数量限制为一个设置的数字,例如每个电子邮件地址5个 我将使用此查询的最终结果创建一个新表 我唯一的想法是使用PHP并选择一个唯一的电子邮件地址列表,然后我会在循环中使用此列表查询表并将其限制为5,但我的表中有大约65k个唯一的电子邮件,总记录约284k行 有没有一种方法可以在MySQL中实现这一点 下面是表格结构 first_name, last_name, email John, smi
first_name, last_name, email
John, smith, js@email.com
john, smith, js@email.com
John, smith, js@email.com
john, smith, js@email.com
Jane, smith, jbs@email.com
jane, smith, jbs@email.com
Jane, smith, jbs@email.com
john, smith, js@email.com
我希望得到一个返回相同记录的查询,但将重复项限制为我可以更改的参数。在上面的示例中,假设最多允许2个副本。我想去
first_name, last_name, email
John, smith, js@email.com
john, smith, js@email.com
Jane, smith, jbs@email.com
jane, smith, jbs@email.com
希望这能更清楚一点
谢谢。这样试试
SELECT user_id, first_name, last_name, email
FROM
(
SELECT user_id, first_name, last_name, email,
(
SELECT 1 + COUNT(*)
FROM users
WHERE email = u.email
AND user_id < u.user_id
) rnum
FROM users u
) q
WHERE rnum <= 2 -- change 2 to a number of duplicates you need
ORDER BY email, user_id
这里是演示您能展示一个示例数据以及您需要从中获得什么吗?使用多种解决方案中的一种来获取每组行数,然后仅选择带有行的行。您的表中是否有id列?是的,有id列。您是否尝试过选择DISTINCT?