限制MYSQL中记录的出现

时间:2011-08-17 12:18:37

标签: mysql

我创建了一个视图,它结合了两个表来显示电子邮件地址列表和位置详细信息,即

电子邮件地址一个|位置1
电子邮件地址一个|位置2
电子邮件地址一个|位置3
电子邮件地址一个|位置4
电子邮件地址二|位置1
电子邮件地址二|位置2

这会循环播放几百封电子邮件。

不幸的是,我需要限制每个电子邮件地址,因此每个电子邮件地址只能选择5条记录 - 目前有些记录会返回超过70条记录。

是否可以将返回的每个电子邮件地址的数量限制为最多5个?

2 个答案:

答案 0 :(得分:1)

您需要在退货结果中为每个电子邮件地址添加排名,例如

1 | Email Address One | Location 1
2 | Email Address One | Location 2
3 | Email Address One | Location 3
4 | Email Address One | Location 4
1 | Email Address Two | Location 1
2 | Email Address Two | Location 2

一旦你有这个等级,你可以添加一个等级< 5.如果你使用group子句来创建排名,你将不得不使用having子句,例如rank< 5。

不幸的是我不知道你的表的布局或你的查询来创建上述结果,因此我无法帮助你创建排名。

这尚未经过测试,但可能会有效(假设id是位置的唯一标识符):

select 
    user.email AS email,
    locations.locationname AS locationname,
    count(A.id) AS rank
from 
    locations
    join user on (location.department = user.department)
    join locations A on A.id < locations.id
group by
    locations.id
having
    rank < 5
order by
    locations.id

答案 1 :(得分:0)

如何使用MySQL的LIMIT命令?请参阅http://dev.mysql.com/doc/refman/5.1/en/select.html