使用select语句中设置的变量

时间:2013-03-27 20:55:09

标签: mysql sql

我可以使用我在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)

2 个答案:

答案 0 :(得分:1)

没有。根据mysql手册:

  

作为一般规则,您不应该为用户变量赋值   并在同一语句中读取值。你可能会得到   你期望的结果,但这不能保证。的顺序   涉及用户变量的表达式的评估是未定义的   可能会根据给定声明中包含的元素进行更改;   另外,这个顺序不保证是相同的   发布MySQL服务器。

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

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

答案 1 :(得分:-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)

See the demo