Mysql
基於 sum 欄位的新欄位
我正在嘗試基於另一個(總和欄位)創建一個新欄位
SELECT sum(price) AS old_price, old_price+100 AS total_price FROM sales
這將返回**“欄位列表”中的未知列“old_price”**
sum
只是一個例子,我真正的問題是在這個欄位中使用一個選擇我究竟做錯了什麼?
謝謝。
–edit 我使用變數來重用別名,更新程式碼:
SELECT @old_price := sum(price) AS old_price, @old_price+100 AS total_price FROM sales
如果您認為這不是一個好習慣,請告訴我。
你沒有做錯什麼。不幸的是,在欄位列表中引用計算列是不可能的。
通常的解決方法是使用自連接、連接到子選擇或類似的東西。但這僅適用於更複雜的計算。在您的情況下,解決方案就是按照 Ryan 提到的方式編寫它,即使這會讓每個程序員都反感。
是的,選擇列表中的列不能通過別名引用其他列。這是標準 SQL。
MySQL 不保證選擇列表的評估順序從左到右,因此不建議使用像您顯示的變數。
另一種解決方法是在派生表中進行計算並創建列別名,然後在外部查詢中引用它們。這是標準 SQL 並且是可靠的。
SELECT old_price, old_price + 100 AS total_price FROM ( SELECT sum(price) AS old_price FROM sales ) AS t;