我正在構建一個報告並使用用戶定義的變量來保持查詢儘可能緊湊。我在MySQL Workbench和PHP中注意到的是,它們並不總是正常工作。在MySQL中用戶定義的變量有奇怪的行爲
例如:
SELECT
@NewSales := SUM(CASE WHEN `v`.`new_used`='N' THEN 1 ELSE 0 END) AS `NewSales`,
@UsedSales := SUM(CASE WHEN `v`.`new_used`='U' THEN 1 ELSE 0 END) AS `UsedSales`,
@UsedSales + @NewSales AS `TotalSales`
FROM `fi_sales` `s`
LEFT JOIN `vehicles` `v` ON `v`.`stock_number`=`s`.`stock_number`
如果我運行在工作臺上面的查詢,在第一次運行輸出TotalSales = NULL:
NewSales, UsedSales, TotalSales
3418, 2889, NULL
如果我刷新查詢,輸出端產生預期的結果爲TotalSales:
NewSales, UsedSales, TotalSales
3418, 2889, 6307.000000000000000000000000000000
有點奇怪;就好像該變量在設置它的相同查詢中不可用一樣。我通常通過重複計算而不使用變量來解決這個問題。
我的下一個問題是,如果我從Workbench中將相同的查詢複製到我的應用程序(PHP)中,TotalSales輸出將產生「0」零。
我確定有一個很好的解釋,這裏發生了什麼,但我很難找到它。任何答案非常感謝。
額外的軟件包信息... #MySQL的 的MySQL服務器/現在5.7.16-0ubuntu0.16.04.1 #PHP php7.0常見/現在7.0.8-0ubuntu0.16.04.3 #工作臺 版本6.3.9 – Stinkys