グループごとの最大値 が必要です;基本的に、支払いテーブルをグループ化して最大レコードを識別し、結果をそれ自体と結合して他の列をフェッチします。
SELECT users.*, payments.method, payments.id AS payment_id
FROM payments NATURAL JOIN (
SELECT user_id, MAX(id) AS id
FROM payments
GROUP BY user_id
) t RIGHT JOIN users ON users.id = t.user_id
MAX(id)
に注意してください 「最新のお支払い」ではない場合があります "、アプリケーションとスキーマによって異なります。通常は、"最新を判別することをお勧めします。 "TIMESTAMP
に基づく AUTO_INCREMENT
などの合成識別子に基づくよりも 主キー列。