代码之家  ›  专栏  ›  技术社区  ›  joe

如何根据字段限制结果

  •  0
  • joe  · 技术社区  · 16 年前

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

    2 回复  |  直到 16 年前
        1
  •  1
  •   RSeidelsohn    16 年前

    SELECT phone_number FROM phone_numbers WHERE user_id = XX LIMIT 5
    

    但是,如果您要在另一个查询中查找子选择,则必须使用JOIN,并且不能限制此JOIN。因此,首先选择用户,然后在每个用户的基础上为每个用户选择5个电话号码。

        2
  •  1
  •   joe    16 年前

    对于Augenfind描述的情况,您可以使用“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
    

    希望这能有所帮助。