後続の式の SQL SELECT ステートメントでの列エイリアスの使用
SQL では、同じ SELECT ステートメントの後続の式で列の別名を使用したい場合があります。ただし、これを実行しようとすると、質問で説明されているものと同様のエラーが発生する可能性があります。
この制限の理由は、SELECT ステートメントが評価されるときに列の別名が一緒に処理されるためです。したがって、同じ SELECT ステートメント内では別名を使用できません。
解決策: クエリをサブクエリにカプセル化します
この問題を解決するには、元のクエリをサブクエリにカプセル化します。これにより、列エイリアスをサブクエリの外部で使用できる新しいスコープが作成されます。
式 ROUND(avg_time * cnt, 2) で列エイリアス avg_time と cnt を使用するようにクエリを変更する方法は次のとおりです。
<code class="language-sql">SELECT stddev_time, max_time, avg_time, min_time, cnt, ROUND(avg_time * cnt, 2) as slowdown FROM ( SELECT COALESCE(ROUND(stddev_samp(time), 2), 0) as stddev_time, MAX(time) as max_time, ROUND(AVG(time), 2) as avg_time, MIN(time) as min_time, COUNT(path) as cnt, path FROM loadtime GROUP BY path ORDER BY avg_time DESC LIMIT 10 ) X;</code>
クエリをサブクエリにカプセル化すると、外部の SELECT ステートメントでエイリアスを使用でき、式 ROUND(avg_time * cnt, 2) を正常に評価できるようになります。
以上が同じ SQL SELECT ステートメント内の後続の式で列のエイリアスを使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。