0

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

我想每个用户只获得 5 个电话号码。不仅仅是来自数据库的 5 个结果?

4

2 回答 2

1

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

SELECT phone_number FROM phone_numbers WHERE user_id = XX LIMIT 5

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

于 2009-10-20T14:57:33.133 回答
1

对于Augenfeind描述的情况,您可以使用“ROW_NUMBER() OVER PARTITION (..)”Mysql模拟(如果您进行连接并为每个用户选择不超过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

希望有帮助。

于 2009-10-21T20:30:28.140 回答