我创建了一个视图,它结合了两个表来显示电子邮件地址列表和位置详细信息,即
电子邮件地址一个|位置1
电子邮件地址一个|位置2
电子邮件地址一个|位置3
电子邮件地址一个|位置4
电子邮件地址二|位置1
电子邮件地址二|位置2
这会循环播放几百封电子邮件。
不幸的是,我需要限制每个电子邮件地址,因此每个电子邮件地址只能选择5条记录 - 目前有些记录会返回超过70条记录。
是否可以将返回的每个电子邮件地址的数量限制为最多5个?
答案 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。