如何根据字段限制结果

时间:2009-10-20 14:51:35

标签: database mysql limit

如何在基于字段的mysql数据库查询中使用'LIMIT'。只考虑用户有10个电话号码,我想只为该用户获得5个电话号码。

我想每个用户只能获得5个电话号码。数据库不仅有5个结果?

2 个答案:

答案 0 :(得分:1)

嗯......这应该是相同的(关于你的最后一句话):

SELECT phone_number FROM phone_numbers WHERE user_id = XX LIMIT 5

但是如果你在另一个查询中寻找一个子选择,那么你将不得不使用JOIN并且不能限制这个JOIN。因此,首先要选择用户,然后 - 基于每个用户 - 为每个用户选择5个电话号码。

答案 1 :(得分:1)

您可以使用“ROW_NUMBER()OVER PARTITION(..)”Mysql模拟Augenfeind描述的情况(如果您进行连接并为每个用户选择不超过5个电话号码)。 请参阅此处以了解逻辑:http://www.xaprb.com/blog/2005/09/27/simulating-the-sql-row_number-function/

这就像是:

SELECT * FROM 
users u JOIN
(
select l.user_id, l.phone, count(*) as num
from phones as l
left outer join phones as r
    on l.user_id = r.user_id
    and l.phone >= r.phone
group by l.user_id, l.phone
) p
ON u.user_id=p.user_id AND p.num<=5

希望有所帮助。