1

我可以使用我在select语句中设置的变量吗?

我想做这样的事情(这显然是行不通的):

SELECT 
    YEAR(date_of_spend), 
    @current := SUM(spend_amount),
    @half := (SUM(spend_amount) / 2),
    (@current - @half)
FROM `sales_data`
GROUP BY YEAR(date_of_spend)
4

2 回答 2

1

不,根据mysql手册:

作为一般规则,您永远不应为用户变量赋值并在同一语句中读取该值。您可能会得到预期的结果,但这不能保证。涉及用户变量的表达式的求值顺序是未定义的,并且可能会根据给定语句中包含的元素而改变;此外,不保证此顺序在 MySQL 服务器的版本之间是相同的。

http://dev.mysql.com/doc/refman/5.0/en/user-variables.html

您需要再次重复表达式或使用子查询

于 2013-03-27T21:43:33.210 回答
-1

只需要设置它们:

SELECT 
    YEAR(date_of_spend), 
    @current := SUM(spend_amount),
    @half := (SUM(spend_amount) / 2),
    (@current - @half)
FROM `sales_data`,
    (SELECT @current := 0, @half := 0) r
GROUP BY YEAR(date_of_spend)

请参阅演示

于 2013-03-27T20:57:37.287 回答