フィールドに基づく mysql データベース クエリで「LIMIT」を使用する方法。ユーザーが10の電話番号を持っていると考えてください。そのユーザーの電話番号を5つだけ取得したいと思います。
ユーザーごとに 5 つの電話番号のみを取得したいと考えています。データベースからの5つの結果だけではありませんか?
うーん...これは同じはずです(最後の文に関して):
SELECT phone_number FROM phone_numbers WHERE user_id = XX LIMIT 5
ただし、別のクエリ内でサブセレクトを探している場合は、JOIN を使用する必要があり、この JOIN を制限することはできません。したがって、最初にユーザーを選択してから、ユーザーごとに 5 つの電話番号を選択します。
「ROW_NUMBER() OVER PARTITION (..)」Augenfeind が説明した状況で 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
それが役立つことを願っています。