使用条件过滤mysql查询/对结果进行分组

时间:2015-07-09 14:25:05

标签: mysql

我有一个mysql表(见下文),其中包含很多电子邮件地址。我想从此表中选择X(20)条目,但只从每个域中选择Y(2)。这可能与sql一起使用吗?如果我使用Group by,则只会使用一个域。但它应该是可变的每个查询使用多少个域。

表格

id | email        | domain
---|--------------|--------
1  | foo@bar.de   | bar.de
2  | baz@bar.de   | bar.de
3  | admin@bar.de | bar.de
4  | info@bar.de  | bar.de
5  | bar@foo.com  | foo.com
6  | baz@foo.com  | foo.com

结果应为

ID:1,2,5,6

1 个答案:

答案 0 :(得分:1)

如果您只想为每个域输入两个条目,则可以执行以下操作:

select t.*
from thetable t
where (select count(*)
       from thetable t2
       where t2.domain = t.domain and t2.id <= t.id
      ) <= 2;

如果你有一个更大的表,那么有更有效的方法。

我不知道X(20)应该是什么意思。