これは私のクエリの問題のある部分です:
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
より多くのサブクエリと派生テーブルで使用する必要があるため、そうすると非効率的です同じサブクエリを何度も使用しました。