1. ホーム
  2. mysql

[解決済み] SELECTクエリで計算フィールドを再利用できますか?

2023-05-05 06:37:30

質問

mysql ステートメント内で計算フィールドを再利用する方法はありますか。私は、エラー "不明な列 total_sale" のために取得します。

SELECT 
    s.f1 + s.f2 as total_sale, 
    s.f1 / total_sale as f1_percent
FROM sales s

それとも計算を繰り返さなければならないのでしょうか?必要な計算をすべて追加すると、非常に長いSQL文になります。

SELECT 
    s.f1 + s.f2 as total_sale, 
    s.f1 / (s.f1 + s.f2) as f1_percent
FROM sales s

もちろん、PHPのプログラムですべての計算を行うことができます。

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

はい、変数を再利用することができます。これはその方法です。

SELECT 
    @total_sale := s.f1 + s.f2 as total_sale, 
    s.f1 / @total_sale as f1_percent
FROM sales s

詳しくはこちらをご覧ください。 http://dev.mysql.com/doc/refman/5.0/en/user-variables.html

[注意: この動作は未定義です。 MySQL ドキュメントによると:] 。

一般的なルールとして、同じステートメント内でユーザ変数に値を割り当て、その値を読み取ることは決してしないでください。期待する結果が得られるかもしれませんが、これは保証されません。