我正在构建一个报告并使用用户定义的变量来保持查询尽可能紧凑。我在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