1. ホーム
  2. mysql

[解決済み] MySQL INNER JOINは2番目のテーブルから1行だけを選択する

2022-05-26 22:52:43

質問

私は users テーブルと payments テーブルがあり、各ユーザーの支払いは payments テーブルで複数の支払いを関連付けることができます。私は、支払いを持っているすべてのユーザーを選択したいのですが、最新の支払いだけを選択したいのです。私はこのSQLを試していますが、私はネストされたSQLステートメントを試したことがないので、私は何が間違っているのかを知りたいのです。ヘルプに感謝します。

SELECT u.* 
FROM users AS u
    INNER JOIN (
        SELECT p.*
        FROM payments AS p
        ORDER BY date DESC
        LIMIT 1
    )
    ON p.user_id = u.id
WHERE u.package = 1

どのように解決するのですか?

サブクエリで最新日付を取得する必要があります。 user ID .

SELECT  a.*, c.*
FROM users a 
    INNER JOIN payments c
        ON a.id = c.user_ID
    INNER JOIN
    (
        SELECT user_ID, MAX(date) maxDate
        FROM payments
        GROUP BY user_ID
    ) b ON c.user_ID = b.user_ID AND
            c.date = b.maxDate
WHERE a.package = 1