0

これは私のクエリの問題のある部分です:

SELECT
    (SELECT id FROM users WHERE name = 'John') as competitor_id,
    (SELECT MIN(duration)
        FROM
            (SELECT duration FROM attempts
                WHERE userid=competitor_id ORDER BY created DESC LIMIT 1,1
            ) x
    ) as best_time

実行すると、次のエラーがスローされます。

#1054 - 「where 句」の不明な列「competitor_id」

派生テーブル 'x' が親のクエリ エイリアスを参照できないようcompetitor_idです。すべての派生テーブルで使用できる何らかのグローバル エイリアスを作成する方法はありますか?

クエリを WHERE 句で直接サブクエリとして使用し、エイリアスをまったく使用しないことはわかっていcompetitor_idますが、実際のクエリははるかに大きく、competitor_idより多くのサブクエリと派生テーブルで使用する必要があるため、そうすると非効率的です同じサブクエリを何度も使用しました。

4

3 に答える 3