割り当てられているのと同じ SELECT 句で列エイリアスを使用する方法はありますか? たとえば、次のようになります。
SELECT ord_id, candy_id, price, quantity,
price * quantity AS ext_cost, ext_cost * @tax_rate
ext_cost
MySQL はクエリ内の" " を認識しないため、エラーを返しますext_cost * @tax_rate
。それが不可能な場合、このようなものを書かずに、最初のクエリにリストされているすべてのものを含むテーブルを返すことは可能ですか?
SELECT ord_id, candy_id, price, quantity,
price * quantity AS ext_cost, (price * quantity) * @tax_rate
ext_cost
基本的に、 SELECT クエリで再利用する方法があるかどうか疑問に思っていました。
ベストアンサー1
いいえ、エイリアスを参照する方法はありませんが、式を変数に割り当て、同じ SELECT 句でその変数を参照することはできます。
SELECT ステートメント内では、変数の割り当ては常に中置演算子 によって行われます:=
。 *ステートメント内では、または のSET
いずれかになります。=
:=
例えば
SELECT
ord_id
, candy_id
, price
, quantity
, @exc_cost := price * quantity AS exc_cost
, @exc_cost * @tax_rate AS my_favourite_field
...
<FROM CLAUSE>
条件付きで変数の割り当てを実行することもできます。
例えば
IF(quantity > 90,
@exc_cost := price * quantity * 0.95
, @exc_cost := price * quantity) AS exc_cost
注 1: 集計メジャーと group by 句がない場合、変数は列の順序に従って評価されます。
SELECT @t, @t+2 FROM (SELECT @t := 1) a
出力を生成する
@t @t+2
1 3