如何在基于字段的mysql数据库查询中使用'LIMIT'。只考虑用户有10个电话号码,我想只为该用户获得5个电话号码。
我想每个用户只能获得5个电话号码。数据库不仅有5个结果?
答案 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
希望有所帮助。